如果您想根据子字符串的出现(例如“\r\n”)来拆分字符串,则必须使用字符串搜索函数,例如 char * strstr(,)。 strstr() 将返回一个指向匹配子字符串的指针。然后,您可以在该点操作结果字符串以从结果中删除 strlen("\r\n") 字节,并继续搜索。
[EDITED] 来自一篇出色的帖子 here,并引用了 this guy 的优秀代码>
m-qayyums 代码在循环中被调用,以向您展示如何使用 strstr(,) 等查找(并替换)多个出现的子字符串,甚至是空字符串。人。
#include <ansi_c.h>
#include <stdio.h>
#include <string.h>
char *replace_str(char *str, char *orig, char *rep);
int main ()
{
char origStr[]={"this is anggg originalggg lineggg ogggf texgggt"};
char newString[]={"this is anggg originalggg lineggg ogggf texgggt"};
sprintf(newString, "%s", origStr);
while(strstr(newString, "ggg"))
{
sprintf(newString, "%s", replace_str(newString, "ggg", ""));
}
printf("Original String: %s\n", origStr);
printf("New String: %s\n", newString);
getchar();
return 0;
}
char *replace_str(char *str, char *orig, char *rep)
{
static char buffer[4096];
char *p;
if(!(p = strstr(str, orig))) // Is 'orig' even in 'str'?
return str;
strncpy(buffer, str, p-str); // Copy characters from 'str' start to 'orig' st$
buffer[p-str] = '\0';
sprintf(buffer+(p-str), "%s%s", rep, p+strlen(orig));
return buffer;
}
[EDIT_2] 用“\r\n”替换“ggg”我使用上面的代码得到了这个结果: