小白求助!字符与字符数组问题
在做《C程序设计语言》第二版的习题:编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行。不知道自己写得对不对,但运行出来,我输入4个a回车,居然有笑脸,那是什么呀?
#include<stdio.h>
#include<conio.h>
#define MAXLINE 1000
int getLine(char line[],int lim);
main(){
int c,len;
char line[MAXLINE];
while((len=getLine(line,MAXLINE))>0)
printf("%d,%s",len,line);
}
int getLine(char s[],int lim){
int c,i,j;
char ss[MAXLINE];
for(i=0;i<lim-1 && (c=getchar())!=EOF && c!='\n';++i)
ss[i]=c;
if(c=='\n'){
--i;
for(;ss[i]==' '|| ss[i]=='\t';--i)
;
for(j=0;s[j]=ss[j]&&j<=i;++j)
;
s[j]='\n';
++j;
s[j]='\0';
}
return j;
}
[解决办法]
if(c=='\n'){
--i;
for(;ss[i]==' '
[解决办法]
ss[i]=='\t';--i)
;
for(j=0;s[j]=ss[j]&&j<=i;++j)
;
s[j]='\n';
++j;
s[j]='\0';
}
改为
if(c=='\n'){
--i;
}
for(;ss[i]==' '
[解决办法]
ss[i]=='\t';--i);
for(j=0;j<=i;++j) s[j]=ss[j];
s[j]='\n';
++j;
s[j]='\0';
[解决办法]
s[j]=ss[j]&&j<=i 与 s[j]=(ss[j]&&j<=i) 一样