过滤多余的空格

 1 #include <stdio.h>
 2 #include <string.h>
 3 char *process(char * s);
 4 int main(void)
 5 {
 6     char str[200];
 7     //char str[200] = "Hello      world.This is    c language.";
 8     char *s;
 9     
10     gets(str);
11     s = process(str);
12     puts(s);
13     
14     return 0;
15 }
16 char *process(char *s)
17 {
18     char str_t[200];
19     char *p1, *p2;
20     
21     strcpy(str_t, s);   //复制原字符串
22     p1 = str_t;         //指向临时字符串的指针
23     p2 = s;             //指向原来字符串的指针
24     
25     while (*p1) {
26         if (*p1 != ' ') {
27             *p2 = *p1;
28             p1++;
29             p2++;
30         } else {
31             *p2 = ' ';
32             p1++;
33             p2++;
34             while (*p1 == ' ') {
35                 p1++;
36             }
37         }
38     }
39     *p2 = '\0';
40     
41     return s;
42 }

 

参考老师的讲解,思考后重新编写。

 

 1 #include <stdio.h>
 2 
 3 void process(char *s1, char *s2);
 4 int main(void)
 5 {
 6     //char str1[201];     //str1是一个指向数组第一个元素的常量指针
 7     char str1[200] = "Hello      world.This is    c language.";
 8     char str2[201];
 9     
10     //gets(str1);
11     process(str1, str2);
12     puts(str2);
13     
14     return 0;
15 }
16 //s1 = str1; s2 = str2
17 void process(char *s1, char *s2)
18 {
19     char *p1, *p2;
20     
21     p1 = s1;
22     p2 = s2;
23     
24     while (*p1) {
25         if (*p1 != ' ') {
26             *p2 = *p1;
27             p1++;
28             p2++;
29         } else {
30             //循环后,p1指向后面第一个不是空格的元素
31             while (*p1 == ' ') {
32                 p1++;
33             }
34             *p2 = ' ';
35             p2++;
36         }
37     }
38     *p2 = '\0';
39 }

 

posted @ 2020-05-19 09:40  jason2018  阅读(615)  评论(0编辑  收藏  举报