C字符串分离

时间:2016-11-20 20:01:47

标签: c string char divide

我查看了相关主题,尝试了一些示例,并没有发现任何可以帮助我的内容。

我正在输入一个字符串作为输入,例如char str [50] 它具有以下格式删除1 1 删除可以是另一个具有不同长度的单词 整数的数量可能超过2 如果可能的话,我需要将字符串的每个部分存储在数值int的不同变量中

我尝试使用strcmp stracat strtok strstr但显然我错过了一些东西

$.when.apply(jQuery, saveChanges()).done(...);

这是我最近的尝试。我尝试做的是删除空格字符,然后我可能会识别删除后面的单词,例如如果是删除或者是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, " ");
}

2 个答案:

答案 0 :(得分: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++;

答案 1 :(得分: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