串的处理(纯C实现)
串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
例如:
用户输入:
you and me what cpp2005program
则程序输出:
You And Me What Cpp_2005_program
用户输入:
this is a 99cat
则程序输出:
1 #include<stdio.h> 2 #include<string.h> 3 #include<ctype.h> 4 //合并空格 5 void delKongge(char *s) 6 { 7 char *p=s; 8 while(*p==' ')p++; //删除前面的空格 9 strcpy(s,p); 10 while(*s) 11 { 12 if(s[0]==' '&&s[1]==' ')//如果发现两个连续的空格,开始删除将第二个空格赋值0,然后 13 { 14 s[1]=0; 15 p=s+2;// 将p指向0的后一个 16 while(*p==' ')p++; 17 strcat(s,p); 18 } 19 s++; 20 } 21 } 22 //将单词首字母大写 23 void fun(char *s) 24 { 25 char flag=1; 26 while(*s) 27 { 28 if(flag&&isalpha(*s)) 29 { 30 *s=toupper(*s); 31 flag=0; 32 } 33 flag=*s==' '; 34 s++; 35 } 36 } 37 //在数字与字母间用下划线 38 void add_(char *s) 39 { 40 char *p=s; 41 char temp[100]; 42 while(*s&&*(s+1)) 43 { 44 if( (isdigit(s[0]) && isalpha(s[1])) || (isdigit(s[1]) && isalpha(s[0])) )//在这里加下划线 45 { 46 strcpy(temp,s+1); 47 s[1]=0; 48 strcat(p,"_"); 49 strcat(p,temp); 50 } 51 s++; 52 } 53 } 54 int main() 55 { 56 char s[100]; 57 gets(s); //等待用户输入 58 delKongge(s);//合并空格 59 fun(s);//将单词首字母大写 60 add_(s);//数字与字母间加下划线 61 puts(s);//输出处理后的结果 62 getchar(); 63 return 0; 64 }
This Is A 99_cat
我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。
假设用户输入的串长度不超过200个字符。