繁体   English   中英

用C中的字符替换字符串

[英]replacing string with character in C

该代码需要用户输入(html标记)

ex:
<p> The content is &nbsp; text only &nbsp; inside tag </p>

gets(str);

任务是替换所有&nbsp; newline("\\n")

while((ptrch=strstr(str, "&nbsp;")!=NULL)
{
  memcpy(ptrch, "\n", 1);
}

printf("%s", str);

上面的代码仅将\\n替换为第一个字符。

查询是如何替换整个&nbsp; \\n或如何设置其余的nbsp; 到空字符常量之类的东西,而不用空指针('\\ 0')终止字符串。

你快到了。 现在,只需使用memmove将内存向左移动到新行。

char str[255];
char* ptrchr;
char* end;

gets(str); // DANGEROUS! consider using fgets instead
end = (str + strlen(str));

while( (ptrch=strstr(str, "&nbsp;")) != NULL)
{
    memcpy(ptrch, "\n", 1);
    memmove(ptrch + 1, ptrch + sizeof("&nbsp;") - 1, end-ptrchr);
}

printf("%s", str);

代替memcpy,您可以直接将字符设置为'\\ n': *ptchr = '\\n'; 然后使用memmove将剩余的行向左移动-您用1替换了6个字符,因此必须将行移动5个字符。

    char * ptrch = NULL;
    int len =0;
    while(NULL != (ptrch=strstr(str, "&nbsp;")))
    {
      len = strlen(str) - strlen(ptrch);
      memcpy(&str[len],"\n",1);
      memmove(&str[len+1],&str[len+strlen("&nbsp;")],strlen(ptrch ));   
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM