Xcode scanf字符计数

时间:2011-10-10 21:10:16

标签: xcode

我在Xcode命令行工具中发现你可以用scanf自己输入int代码。 当我为NSString尝试这个时,它没有用,我发现scanf返回一个整数,所以我的问题是,你用什么来输入NSString并将其保存到变量中,如:

int number;
scanf("%i", &number);

编辑: 现在我找到了一个代码,但它只显示了第一个字符:

char naamchar[40];
int nChars = scanf("%39s", naamchar);
NSString * naam = [[NSString alloc] initWithBytes:naamchar 
                                           length:nChars 
                                         encoding:NSUTF8StringEncoding];

naam只有1个字符:(

编辑解决方案:

char naamchar[40];
scanf("%39s", naamchar);
NSString * naam = [NSString stringWithCString:naamchar encoding:NSUTF8StringEncoding];
...

1 个答案:

答案 0 :(得分:0)

man 3 scanf提到:

这些函数返回分配的输入项目数。

设置nChars,返回匹配的项目数,在本例中为1,而不是字符串中的字符数。

尝试用strlen(naamchar)代替nChars,即

char naamchar[40];
int nChars = scanf("%39s", naamchar);
NSString * naam = [[NSString alloc] initWithBytes:naamchar 
                                       length:strlen(naamchar) 
                                     encoding:NSUTF8StringEncoding];

请务必检查nChars == 0,这表示没有要扫描的输入。