+ -
当前位置:首页 → 问答吧 → 过滤空格的时候少了一个字符?

过滤空格的时候少了一个字符?

时间:2010-07-28

来源:互联网

  1. /*过滤空格函数*/
  2. void trimspace(char *p)
  3. {
  4.         char *q;
  5.         if(*p!='\0')
  6.                 q=p+strlen(p)-1;
  7.         else
  8.         return;
  9.         /*------------Found Mistake Below------------*/
  10.         for(;*q==' ';q--);
  11.                 *q='\0';
  12.                 for(q=p;*q==' ';q++);
  13.                         strcpy(p,q);
  14.         return;
  15. }

  16. int main(void)
  17. {
  18.         char p[100]={" sdfd    "};
  19.         trimspace(p);
  20.         printf("%s\n",(char*)&p);
  21.         return 0;
  22. }
复制代码
输出:sdf 少了个d,高手帮看下怎么回事?

作者: jd808   发布时间: 2010-07-28

内存有重叠,不能用strcpy,改用memmove

作者: hellioncu   发布时间: 2010-07-28

  1. for(;*q==' ';q--);
  2. *q='\0';
复制代码
改成

  1. for(;*q==' ';q--);
  2. *(++q) = '\0';
复制代码

作者: zhangsuozhu   发布时间: 2010-07-28

相关阅读 更多

热门下载

更多