C语言完善程序,删除字符串中的所有空格

#include "stdio.h"
void main()
{
char str[80],*p;
int i=0;
p=str;
【1】;
while(*p)
{
if(*p!=' ')
str[i++]=*p;
p++;
}
【2】;
puts(str);
}

*p='\0'或则str[i]='\0'的意思还得从上面的那个循环开始说起,while(*P)何时才为假吗?必须当p指向字符串的结尾标志才行,也就是p指向了'\0',于是*p=0,于是循环退出,循环里面就是把空格去掉,这里的去掉的方法是把以前空格的位置用*p对其赋值,*P的值是空格后的字符,例如ab cd efg'\0'后来会变为abcdefg为什么这里没有'\0',那是因为还没来得及赋值给它就已经退出循环了,所以必须再循环后面加个'\0'。字符串一定要有'\0'做结尾标志,这个就不用说了
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-12-16
gets(str)
*p='\0'或者str[i]='\0'追问

能不能解释一下*p='\0'或者str[i]='\0'连同后面是什么意思

追答

*p='\0'或者str[i]='\0'表示字符串str结束,由于删除了空格,字符串长度发生变化,结尾标识也要移动,如果缺少了这一行,会导致输出不需要的字符
puts(str)表示输出字符串str

本回答被网友采纳
第2个回答  2018-12-16
第二个填星号p是错误的,不能达到效果,只能填str
第3个回答  2017-10-06
【1】填 gets(str);
【2】填 str[i]='\0';
第4个回答  2014-06-22
gets(str);
*p='\0';
相似回答