[char a[30];gets(a):puts(a);return 0;该程序运行时,若键人:How are you则输出结果:How are you同样地,一般不能使用字符指针变量作为gets函数的参数来输人字符串。在C语言中,经常需要以逐个字符的方式对字符串进行处理。下面来看一个以逐个字符的方式复制字符串的例子。【例8.2】从键盘输入一个字符串,存人字符数组S中,然后用逐个字符的方式复制到字符数组t中。编程思路:逐个字符复制就是从源字符串的第0个字符开始,将所有的字符逐个复制到目标数组中。从而写出如下的程序段:t[0]=s[0];t[1]=s[1];t[2]=s[2];....显然,可以归纳为如下的循环结构:1=0;while(循环条件)(t[i]-s[i];i++;那么,这里的循环条件应该如何表示呢?每个字符串都有一个结束标志"0',因此可以用10控制循环。在当前字符不等于"0'时,执行循环体;在当前字符等于"0'时,结束循环。从而得到如下循环:1=0;while(s[ijl=-rlo")(t[i]-s[i];i++;完整的源程序:第#include <stdio.h>8int main(void)章(chars[1ool,t[1oo];int i;字gets(s);符i=0;串while( s[i]="lo)处(tri]= s[i];理117
i++;1puts(t);return 0;该程序输出的结果中,在字符串的末尾出现了一些乱字符。原因何在呢?这是因为在该程序的循环部分,并未将数组s中的"O'复制到数组t中,从而导致数组t中的字符序列,没有正常的字符串结束标记。修正的源程序:#include <stdio.h>int main(void)(chars[100],t[100];int i;gets(s);(版社1=0;while( s[ijl=llo')(ti]= s[i];i++;1ti]-"lo";puts(t):return 0;8.3字符处理函数与字符串处理函数除了字符串的输入与输出之外,更重要的操作是对字符串的各种处理,如求字符串长度、字符串连接、字符串比较等。为了使用方便,C语言提供了一组专门用于字符与字符串处理的库函数。在程序中调用字符与字符串处理的库函数时,需要在程序开头分别添加预处理命令#include<ctype.h>或#include<string.h>。8.3.1字符处理函数1.isalpha函数其调用格式为cisalpha(ch)语若字符ch是字母,则该函数返回值非0;否则,返回值为0。言程2.islower函数序设其调用格式为计islower(ch)新若字符ch是小写字母,则该函数返回值非0;否则,返回值为0。思路118