你有一些错误。
您希望用户输入“单词”,即字符串。那就不要使用%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