【问题标题】:C string separationC字符串分离
【发布时间】:2016-11-20 20:01:47
【问题描述】:

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

我正在输入一个字符串,例如 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, " ");
}

这是我最近的尝试。我要做的是删除空格字符,然后我可能可以识别 Remove 后面的单词,例如如果它是删除或它是与 strstr 的其他词。但是如何分离数值呢?这是我的输出如何摆脱这些字符

    The string is ��_o�Remove2

    The string is ��_o�Remove23

    The string is ��_o�Remove232

    The string is ��_o�Remove232

【问题讨论】:

  • 删除字符感谢@user3121023

标签: c string char divide


【解决方案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++;

【讨论】:

  • 我想我按照你说的做了,我只打印了字符串是 Remove 几次 [link]pastebin.com/mn337qXY
  • 好吧,我确实遇到了分段错误
  • @ThomasJeffrey 是的。 strcpy 应该有 'pch' 而不是 '*pch'。我的错。
【解决方案2】:

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

只需检查空间并忽略它们

  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2017-07-12
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2013-03-30
    • 2010-09-24
    • 2016-07-25
    相关资源
    最近更新 更多