2010-11-08 58 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

相關問題