c - C 中围绕字符分割字符串

标签 c string split char substring

我有一个像“;”的字符或 ',' 用作原始字符串中的分隔符。我需要分割字符串并迭代每个字符串。 例如:如果,

char* str = "apples, mangoes , orang; ,ad";

分隔符是“,”,那么我需要类似的东西

while(substr!='\0') {
     func(substr);
     //some operation maybe like substr=strstr(substr)+1;
}

该函数应使用字符串调用 4 次:“apples”、“mangoes”、“orang;”、“ad”。

最佳答案

在您的情况下 str 是字符串文字,您不能在其上使用 strtok 因为它位于 R_ONLY 部分。 并且 strtok 确实修改了您的 str ,它是文字,会产生运行时错误(段错误)。

如果您想拆分它,则必须有用户输入。可能是fgets(最喜欢的一个)。

fgets (str, SIZE, stdin);    // user input for str

仅当您有用户输入的字符串时才使用 strtok 函数。

char * strtok (char *string, const char *delimiter);

这就是您如何使用它。

char *buff = strtok (str, ",;");
while (buff != NULL)
{
    printf (buff);
    buff = strtok (NULL, ",;");
}

有关字符串函数的更多信息

man string

关于c - C 中围绕字符分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25905230/

相关文章:

带冒号的 Java SPLIT : and xml

c - 从套接字缓冲区逐行读取

c++ - 如何正确使用 MPI_Scatterv()

c - 如何在c中使用exec多次运行ping

ios - Swift 4.2 使用多个字符作为分隔符提取子字符串

javascript - 句子代码中最长的单词不起作用

c - 将多种类型的值传递给函数

c - STM32将带符号的short写入EEPROM

从 C 中的另一个数组创建数组

c - 字符串值是从另一个字符串获取值