我有一个像“;”的字符或 ',' 用作原始字符串中的分隔符。我需要分割字符串并迭代每个字符串。 例如:如果,
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/