代码采用用户输入(html标记)
ex:
<p> The content is text only inside tag </p>
gets(str);
任务是用
newline("\n")
次出现
while((ptrch=strstr(str, " ")!=NULL)
{
memcpy(ptrch, "\n", 1);
}
printf("%s", str);
上面的代码仅替换\n
的第一个字符。
查询是如何用
替换整个\n
或如何将nbsp;
的其余部分设置为空字符常量,而不使用空指针('\ 0')终止字符串。
答案 0 :(得分:1)
你快到了。现在只需使用memmove
将内存移动到新行。
char str[255];
char* ptrchr;
char* end;
gets(str); // DANGEROUS! consider using fgets instead
end = (str + strlen(str));
while( (ptrch=strstr(str, " ")) != NULL)
{
memcpy(ptrch, "\n", 1);
memmove(ptrch + 1, ptrch + sizeof(" ") - 1, end-ptrchr);
}
printf("%s", str);
答案 1 :(得分:1)
而不是memcpy你可以直接将字符设置为'\ n':*ptchr = '\n';
然后使用memmove移动剩余的行 - 你用1替换了6个字符,所以你必须移动由5个字符组成。
答案 2 :(得分:0)
代码
char * ptrch = NULL;
int len =0;
while(NULL != (ptrch=strstr(str, " ")))
{
len = strlen(str) - strlen(ptrch);
memcpy(&str[len],"\n",1);
memmove(&str[len+1],&str[len+strlen(" ")],strlen(ptrch ));
}