你有一些錯誤。
您希望用戶輸入「單詞」,即字符串。那就不要使用%c
,其中僅掃描一個字符,但%s
相反,它掃描一個字符串(請注意,這可能意味着該用戶還輸入空格或超過29個字符)。
您存儲在陣列之外。該陣列被聲明爲
char parola[30];
這意味着它可以與值0。29.但是您的&parola[30]
點超出陣列索引(在索引30,其不「存在」)。這不是你想要的。做到這一點:
scanf("%s", parola);
並希望用戶不超過29個字符。
字符串的長度然後可以使用
c = strlen(parola);
發現原來這變爲:
@autoreleasepool {
char parola[30];
unsigned long c;
NSLog(@"Write word:");
scanf("%s", parola);
c = strlen(parola);
NSLog(@"The word has %ld letters", c);
}
return 0;
相反的NSLog的,你也可以使用printf
:
printf("Write word: ");
和
printf("The word has %ld letters\n", c);
這看起來更清潔,爲NSLog()
始終顯示這些額外的相關信息,如
2017-06-04 12:37:25.758802+0200 SOTest[4718:2690388]
那就是,國際海事組織,難看。適用於日誌,但不適合清潔屏幕輸出。輸出現在變成:
Write word: Tesla
The word has 5 letters
Program ended with exit code: 0
我想你會因爲使用'NSString'運行Objective-C而獲得更好的運氣。 – vitormm