练习1-18 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行。

Posted 杪杪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习1-18 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行。相关的知识,希望对你有一定的参考价值。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 #define MAXLINE 1000 //允许输入行的最大长度
 6 
 7 int get_Line(char line[], int maxline);
 8 
 9 int removes(char s[]);
10 
11 main()
12 {
13     char line[MAXLINE];
14     while(get_Line(line, MAXLINE) > 0)
15         if(removes(line) > 0)
16             printf("%s", line);
17     return 0;
18 }
19 // getline函数: 读一行读入到S中,并返回其长度
20 int get_Line(char s[], int lim)
21 {
22     int c, i, j;
23     j = 0;
24     for(i = 0; (c = getchar()) != EOF && c != \n; ++i)
25         if(i < lim - 2)
26         {
27             s[j] = c;
28             ++j;
29         }
30     if(c == \n)
31     {
32         s[j] = c;
33         ++j;
34         ++i;
35     }
36     s[j] = \0;
37     return i;
38 }
39 //删除字符串的空格和制表符并返回新的长度
40 int removes(char s[])
41 {
42     int i;
43     i = 0;
44     while(s[i] != \n && i < MAXLINE-2)  //查找‘\n‘在数组中对应的下标
45         ++i;
46     if(i != MAXLINE-2)
47         --i;
48     while(i >= 0 && (s[i] ==   || s[i] == \t)) // 从字符串末尾起向前查找字符值不是‘‘和‘\t‘的字符所对应的下标
49         --i;
50     if(i >= 0)
51     {    
52         ++i;
53         s[i] = \n;
54         ++i;
55         s[i] = \0;
56     }
57     return i;
58 }

 存在不足:每次输入一行字符,处理结果会紧接着下一行输出,不太容易观看

以上是关于练习1-18 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行。的主要内容,如果未能解决你的问题,请参考以下文章

用bat批处理程序通过DOS命令行删除所有的空文件夹

for循环练习题-编写程序,根据输入行数,输出下三角图案

for循环练习题-编写程序,根据输入行数,输出对称金字塔图案(V2.0)

练习7-8 方阵循环右移 (20分)

练习7-8 方阵循环右移 (20分)

for循环练习题-编写程序,根据输入行数,输出金字塔图案