串的处理(纯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个字符。

posted @ 2013-05-04 14:06  Please Call me 小强  阅读(260)  评论(0编辑  收藏  举报