C字符串分离

C string separation

我查看了相关主题,尝试了一些示例,但没有找到任何对我有帮助的东西。

我正在输入一个字符串,例如 char str[50] 它具有以下格式 Remove 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, " ");
}

这是我最近的一次尝试。我想做的是删除 space 个字符,然后我可能可以识别 Remove 后面的词,例如如果它被删除或者它是带有 strstr 的其他单词。但是如何将数值分开?这是我如何摆脱这些字符的输出

    The string is ��_o�Remove2

    The string is ��_o�Remove23

    The string is ��_o�Remove232

    The string is ��_o�Remove232

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++;

据我了解,您可能希望将每个字符串组件放入一个单独的变量中,那么为什么不使用数组呢??

只需检查 space 并忽略它们

  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