0

出于某种原因,无论我尝试strchr还是strrchr,我都会返回相同的值。我不知道为什么。

这是给我带来麻烦的代码段:

      printf("Enter a data point (-1 to stop input):\n");
      fgets(input, 50, stdin);
      char *name = strrchr(input, ',');
      if(name)
      {
         printf("%s", name);
      }

输入是Jane Austen, 6,我试图将它分成两个字符串:一个在逗号之前,一个在逗号之后。但是,我使用strrchr(input, ',');orstrchr(input, ',');似乎毫无意义,因为我的输出是 ALWAYS , 6。有人可以解释为什么吗?

4

2 回答 2

3

这听起来像你想要的strtok

char *name = strtok(input, ",");
char *value = strtok(NULL, ",");
于 2019-11-26T03:08:11.803 回答
0

一些语言提供了一个字符串函数 split ,它接受一个字符串或正则表达式并将字符串拆分为一个由分隔符分隔的子字符串列表(python、ruby、perl)。构造这样的拆分函数并不太难,尤其是如果您只拆分单个字符。

char** split(char* string, char delim);

您还需要一个字符串连接函数和一个清理分配空间的函数。

char* split_join(char** splitray, char* buffer);
void split_free(char** splitray);
于 2019-11-26T04:20:37.543 回答