C语言初学者遇到的问题
其中headspace()和 tailspace()的功能是删除一个字符串中的前导和后继空格
代码运行是遇到问题
#include <stdio.h>
main()
{ void headspace();
void tailspace();
char s[20];
gets(s);
puts(s);
headspace(s);
puts(s);
tailspace(s);
puts(s);
}
headspace(char s[])
{int i,j;
for(i=0;s[i]==32;I++);
if(i==0)return;
for(j=i;s[j]!=’\0’;j++) s[j-i]=s[j];
s[j-i]=’\0’;
}
tailspace(char s[])
{int i=0,k;
while(s[i]!=’\0’)I++;
for(k=i-1;s[k]==32;k--);
s[k+1]= '\0 ';
}
[解决办法]
#include <stdio.h>
void headspace(char* s)
{
int i,j;
for(i=0;s[i]==32;i++);
if(i==0)
return;
for(j=i;s[j]!= ' \0 ';j++) s[j-i]=s[j];
s[j-i]= '\0 ';
}
void tailspace(char* s)
{
int i=0,k;
while(s[i]!= '\0 ')
i++;
for(k=i-1;s[k]==32;k--)
;
s[k+1]= '\0 ';
}
int main()
{
char s[20];
gets(s);
puts(s);
headspace(s);
puts(s);
tailspace(s);
puts(s);
return 0;
}
[解决办法]
while(s[i]!=’\0’)I++;
//这里的 '\0 ' 中的 ’ 是全角的 !!
[解决办法]
headspace 中也是一样的问题!
程序要求是 半角的E文字符,
修改一下就可以了 ~
[解决办法]
直接写 0 就可以了
while(s[i] != 0)
因为 '\0 '的ascII码是 0
这样写不容易出错
再简单就是while(!s[i])