这是我想做的一个例子我有以下列表
[token]
[token1]
[token22]
[token99]
[8token]
[3token3]
我想删除“[”和“]”,然后用我自己的词替换词令牌。所以我有以下代码:
char *getToken(char *repl, char *mysrc)
{
const char *p1 = strstr(mysrc,"[")+1;
const char *p2 = strstr(p1,"]");
size_t len = p2-p1;
char *src = (char*)malloc(sizeof(char)*(len+1));
strncpy(src,p1,len);
src[len] = '\0';
char *find = "token";
char *found;
if(strcmp(src,find) == 0)
return src;
char *res = malloc(strlen(src) + strlen(repl) + 1);
if (res == NULL)
return src;
found = strstr(src, find);
/* Search string not found, return the whole of the source */
if (found == NULL){
strcpy(res, src);
return res;
}
/* Paste the replacement string in */
strncpy(res, src, (size_t)(found - src));
strcat(res, repl);
strcat(res, found + strlen(find));
free(src);
return res;
}
除了在某些情况下我在结果前面得到一个 X 或 H 之外,它工作得很好。像这样:Xtest22 而不是 test22
我对strlen做错了吗?我似乎无法找出我做错了什么。