Если вы хотите разбить строку на основе появления подстроки (например, «\ r \ n»), вам понадобятся функции поиска строк, такие как char * strstr (,). strstr() вернет указатель на соответствующую подстроку. Затем вы можете манипулировать результирующей строкой в этой точке, чтобы удалить байт strlen ("\ r \ n") из результирующего и продолжить поиск.
[Изменено] с отличной пост here со ссылкой на отличный код this guy код
м-qayyums вызывается в цикле, чтобы показать вам, как вы можете искать (и заменить) несколько вхождений подстроки с другой подстрокой, даже пустую строку с использованием strstr (,) et. и др.
#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] замена "GGG" с "\ г \ п" Я получил этот результат, используя код выше:
2-й аргумент 'strtok' - это серия символов для разделения, например' strtok (string, ";,") 'будет разделяться на первые', 'или'; '. – Matthew
есть какая-либо возможность, так что расщепление происходит на всей строке. одиночный символ –
использовать 'strstr' в цикле – P0W