我正在通过 strtok 分割字符串,但发生了不同的情况,例如
*tok =strtok(string,"\r\n");
strtok 当仅找到 \r
时,它会拆分字符串而不是整个 \r\n
,我希望仅当整个字符串出现在数据 中时才拆分字符串\r\n
;
最佳答案
要使用多个字符分割字符串,您可以使用 strstr
循环中
只需重复调用 strstr
即可查找边界字符串的出现位置。
获得结果后,将指针前进子字符串的长度,然后再次重复搜索。
这是一个丑陋的例子,但我认为它可以满足您的需要
#include <stdio.h>
#include <string.h>
int main ()
{
char buffer[128];
char *str ="This is a long text \r\n with \r\nmany carriage returns,\
I hate \r\n just this\r\n nothing else\r\n";
char *token="\r\n";
int l=strlen(str);
char *start,*p;
start=str;
p= strstr (str,token);
while(p)
{
strncpy( buffer,str, p-str);
buffer[p-str] ='\0';
printf("%s\n",buffer);
str=p+strlen(token);
if((str-start) >= l)
break;
p= strstr (str,token);
}
if(!p)
printf("%s\n",str);
return 0;
}
参见HERE
PS:如果有人愿意,请编辑代码,使其更好。
关于c - C语言中通过strtok分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18726077/