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”)並作為函數返回值。字符數組也可以是一個字符串常量。
[例713]字符串長度。
#include
#include
voidmain()
{charsentence[100];
intlength;
puts("Inputasentence:\n");
gets(sentence);
length=strlen(sentence);
printf("Thissentencehas%dcharacters.\n",length);
}
程序運行結果:
Inputasentence:
Let’splayfootball,Jimmy!
Thissentencehas26characters.