2016-11-20 95 views
0

我查看了相关主题,尝试了一些示例,但没有发现任何可以帮助我的东西。C字符串分隔

我正在采取一个输入的字符串例如炭STR [50] 它具有以下格式删除1 1 移除可以是具有不同长度 另一个字整数的数目可以是超过2 我需要每个字符串的一部分存储在不同变量的数值INT如果可能

我试图使用strcmp stracat的strtok的strstr但显然我失去了一些东西

char str[] = "Remove 2 3 2"; 
char * pch; 
char split[50]; 
printf("Splitting string \"%s\" into tokens:\n", str); 
pch = strtok(str, " "); 
while (pch != NULL) { 
    printf("%s\n", pch); 
    strcat(split,pch); 
    printf("\nThe string is %s",split); 
    pch = strtok(NULL, " "); 
} 

这是我最新的尝试。我想要做的是删除空格字符,然后我可能会识别删除后面的单词。如果它是删除或它是与strstr一些其他词。但如何获得分隔的数值?这是我的输出如何摆脱这些字符

The string is ��_o�Remove2 

    The string is ��_o�Remove23 

    The string is ��_o�Remove232 

    The string is ��_o�Remove232 
+0

是删除字符感谢@ user3121023 –

回答

0

据我了解,你可以在每串组成想成为一个独立的变量,那么为什么不使用数组呢?

只检查空间,而忽略他们

char str[] = "hi 1 2 3"; 
    char store[100]; 
    int i=0,j=0; 

    for(i = 0,j = 0; i <= strlen(str); i++){ 
     if(str[i] != 32) { // value of space is 32 
       store[j] = str[i]; 
       j++; 
     } 
    } 

    for(i = 0; i < strlen(store); i++){ 
     printf("%c\n",store[i]); 
    } 

输出:

h 
i 
1 
2 
3 
1

strcat连接。我相信你想要的是逐个获取分割的部分,而不是连接它们。

所以你最好尝试这样的事:

char split[MAX_NUM_TOKENS][50]; 
int num_tokens = 0; 

而不是strcat的,使用这样的:

strcpy(split[num_tokens], *pch); 
printf("The string is %s\n",split[num_tokens]); 
num_tokens++; 
+0

我觉得我做你说什么,我只拿到了打印的字符串是删除多次[链接] http://pastebin.com/mn337qXY –

+0

好吧,我已经得到了分段错误 –

+0

@ThomasJeffrey是的。 strcpy应该有'pch'而不是'* pch'。我的错。 –