我正在尝试在字符串中找到一个模式,如果它存在则将其删除。我一直在玩strtok(aString, "$%");
这会在找到aString
或$
时分解%
。当它只在字符串中找到"$%"
时,如何将其分解?
答案 0 :(得分:0)
您可以使用strstr:
轻松创建此内容char *strtok2(char *str, const char *pattern) {
static char *save = NULL;
if(str == NULL)
str = save;
if(str == NULL)
return NULL;
if((save=strstr(str, pattern))) {
save[0]=0;
save += strlen(pattern);
}
return str;
}
答案 1 :(得分:0)
对于偏离主题感到抱歉。
strtok不是线程安全的。并且你不能在同一部分中使用strtok来表示其他值。所以你不应该使用。 strtok并不难写在你自己身上。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char* argv[]) {
char* p = "$%";
size_t pl = strlen(p);
char* s = "hello$%C$%language$%world";
char* pp = s;
while (pp && *pp) {
char* pn = strstr(pp, p);
if (!pn) pn = pp + strlen(pp);
size_t l = pn - pp;
char* ss = malloc(l + 1);
*(ss + l) = 0;
memcpy(ss, pp, l);
// do something with ss
puts(ss);
free(ss);
pp = pn + pl;
}
return 0;
}