2010-11-08 60 views
0

这里就是我想要做的事:试图从scanf制作NSString。只得到第一个字

char inputBuffer[200]; 
NSString *input; 
scanf("%s", inputBuffer); 
input = [[NSString alloc] initWithUTF8String:inputBuffer]; 
NSLog(input); 

这里发生了什么:

bla bla bla 
2010-11-08 23:17:03.670 TextGame[51147:a0f] bla 

INPUTBUFFER包含整个字符串。我试图做NSLog("%@", inputBuffer)并且有整个字符串。

当我创建这个NSString时,它看起来像只包含最后一个单词。

请帮助我与这些我谷歌搜索整个互联网并没有得到任何地方。 :-)

+0

切勿以这种方式使用scanf。如果你想知道为什么,只要考虑有人在201个非空格字符中键入了什么,你的缓冲区会发生什么。 – JeremyP 2010-11-09 09:47:10

回答

2

scanf("%s", inputBuffer);只读字符,直到遇到空格。因此,只有“bla”存储在缓冲区中。您应该使用gets(inputBuffer)。该函数“从stdin读取字符并将它们作为字符串存储到str中,直到换行符('\ n')或文件结束符到达。”

+0

我只是在纯C中试过,你说得对。哇,我不知道这件事。所以至少这个问题不在NSString中。谢谢。 – Vojto 2010-11-08 22:44:34

+0

你可能应该推荐使用fgets(3),特别是对于使用ISO-C函数的人来说,因为获取是邪恶的... – 2010-11-08 22:44:34

+1

@Vojto:你应该使用fgets(inputBuffer,200,stdin)而不是gets(inputBuffer) – 2010-11-08 22:45:51

相关问题