MyException - 我的异常网
当前位置:我的异常网» C语言 » 小白!字符与字符数组有关问题

小白!字符与字符数组有关问题

www.MyException.Cn  网友分享于:2013-01-09  浏览:3次
小白求助!字符与字符数组问题

在做《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) 一样

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有