在實際編程中常需要對個別字符進行處理,C語言也提供了字符函數。這些函數不能被應用於整個字符串,但可以被應用於字符串中的個別字符。表71和表72羅列了幾個最有用且常用的字符串函數,使用這些函數必須包含頭文件“ctype.h”。
#include
#include
voidmain()
{charch;
printf("Inputaline:\n");
while((ch=getchar())!=\n)
{if(isalpha(ch))/*如果是一個字母*/
putchar(ch+1);/*加密*/
else/*否則*/
putchar(ch);/*原樣輸出*/
}
putchar(ch);/*輸出換行符*/
}
程序運行結果:
Inputaline:
Look!It’saexample!
Mppl!Ju’tbfybnqmf!
可以看到,結果中大寫字母和小寫字母都被譯碼,而空格和標點符號則沒有變化。
[例715]將句中小寫字母改成大寫。
#include
#include
voidmain()
{charch;
printf("Inputaline:\n");
while((ch=getchar())!=\n)
putchar(toupper(ch));
/*若是小寫字母,返回對應的大寫字母再輸出*/
putchar(ch);/*輸出換行符*/
}
程序運行結果:
Inputaline:
Tostop,presstheEnterkeyataline’sstart!
TOSTOP,PRESSTHEENTERKEYATALINE’SSTART!
從結果可以看出,句子中的小寫字母都轉變成了對應的大寫字母,而其他符號沒有變化。
需要注意的是,字符映射函數並不會改變原始的參數,它們隻返回改變後的值。
[例716]從鍵盤上任意輸入五位學生的姓名,找出並輸出按字典排序排在最前麵的學生的姓名。
學生的姓名就是一個字符串,應使用字符數組來存放。所謂字典順序即將字符串按照由小到大的順序排列。程序如下:
#include
#include
#defineNAMELEN80
#defineNUM5
voidmain()
{charstu[NAMELEN],min[NAMELEN];
inti;
printf("Pleaseinput5students’names:\n");
gets(stu);/*輸入第一個字符串*/
strcpy(min,stu);/*將其作為最小字符串保存*/
for(i=1;i