码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-25 16:57:10      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:clu   删除字符串   while   处理   span   允许   最大   etc   str   

 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 编写一个程序,删除每个输入行末尾的空格以及制表符,并删除完全是空格的行。

标签:clu   删除字符串   while   处理   span   允许   最大   etc   str   

原文地址:https://www.cnblogs.com/liuhaiqing/p/12771946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!