正文 第21章 數組3(3 / 3)

while(flag!=0)/*如果回答錯誤,進入循環*/

{if(flag>0)

/*增加娛樂性,根據不同情況給出不同的提示語*/

{printf("Youranswerisinteresting,butnotcorrect.Tryagain.\n");

gets(try);/*被要求再次輸入*/

flag=strcmp(try,ANSWER);/*再次與答案比較*/

else

{printf("Sorry,%sisnottherightanswer.Tryagain.\n",try);

gets(try);

flag=strcmp(try,ANSWER);

printf("That’sright,%sisthecapitalofChina!\n",try);

程序運行結果:

What’sthecapitalofChina?

London

Sorry,Londonisnottherightanswer.Tryagain.

paris

Youranswerisinteresting,butnotcorrect.Tryagain.

beijing

That’sright,beijingisthecapitalofChina!

可以看到,strcmp函數的一個優點是它比較的是字符串而不是數組。盡管數組try占用50個內存單元,字符串“beijing”隻占用8個內存單元,但函數比較時隻看數組try的第一個“\0”之前的部分。因此strcmp函數可以用來比較存放在不同大小數組裏的字符串。

上例中如果用戶回答“Beijing”或“beijing”也會被告知是錯誤的。要編寫出一個更友好的程序,就必須預先考慮到所有可能的正確答案。感興趣的讀者可以自行完善。

6.字符串長度函數strlen

格式:strlen(字符數組名)

功能:求出字符串的實際長度(不含字符串結束標誌“\0”)並作為函數返回值。字符數組也可以是一個字符串常量。

[例713]字符串長度。

#include

#include

voidmain()

{charsentence[100];

intlength;

puts("Inputasentence:\n");

gets(sentence);

length=strlen(sentence);

printf("Thissentencehas%dcharacters.\n",length);

程序運行結果:

Inputasentence:

Let’splayfootball,Jimmy!

Thissentencehas26characters.