过滤多余的空格
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 }