练习1-18 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行
看答案
1 #include <stdio.h> 2 #define MAXLINE 1000 //允许输入行的最大长度 3 #define LONGLINE 80 4 5 int getline(char line[], int maxline); 6 7 int removes(char s[]); 8 9 main() 10 { 11 char line[MAXLINE]; 12 while(getline(line, MAXLINE) > 0) 13 if(removes(line) > 0) 14 printf("%s", line); 15 return 0; 16 } 17 // getline函数: 讲一行读入到S中,并返回其长度 18 int getline(char s[], int lim) 19 { 20 int c, i, j; 21 j = 0; 22 for(i = 0; (c = getchar()) != EOF && c != '\n'; ++i) 23 if(i < lim - 2) 24 { 25 s[j] = c; 26 ++j; 27 } 28 if(c == '\n'){ 29 s[j] = c; 30 ++j; 31 ++i; 32 } 33 s[j] = '\0'; 34 return i; 35 } 36 37 int removes(char s[]) 38 { 39 int i; 40 i = 0; 41 while(s[i] != '\n') 42 ++i; 43 --i; 44 while(i >= 0 && (s[i] == ' ' || s[i] == '\t')) 45 --i; 46 if(i >= 0) 47 { 48 ++i; 49 s[i] = '\n'; 50 ++i; 51 s[i] = '\0'; 52 } 53 return i; 54 } 55 56
答案不懂的地方:removes函数没有读取输入的函数例如getchar..为什么可以实现输入行s【】。。