当我在我的C程序中使用此方法时,字符串不会打印到缓冲区。我尝试通过在%s的中间加一个\来修复它,但这不适用于我需要的东西。
char *replace_str(char *str, char *orig, char *rep)
{
static char buffer[1000];
char string[100];
char *p;
if(!(p = strstr(str, orig)))
return str;
p = strstr(str, orig);
buffer[p-str] = '\0';
strncpy(buffer, str, p-str);
strcpy(string, buffer);
strcat(string,rep);
printf("%s\n", string);
sprintf(buffer, "%s%s", string, p+strlen(orig));
return buffer;
}
谁能告诉我我做错了什么?
答案 0 :(得分:0)
从函数replace_str()
的名称开始,我将假设你想要在子串str
之前取字符,附加替换字符串,然后在后面附加字符。
问题是p + strlen(orig)
。由于p
已分配strstr(str, orig)
,因此它将指向orig
中的字符串。除非在str
的第一个位置找到此字符串orig
,否则将orig
字符串的长度添加到p
将指向orig
中的字符串。
你想要的是:
sprintf(buffer, "%s%s", string, p+strlen(str));
这会将p
指向原始字符串中str
之后的第一个字符。