尝试解决需要从stdin读取输入的问题。如果单词之间没有空格,我可以使用以下代码读取标准输入:
输入:
M
Blue
Balae
代码:
NSString *word;
char word_temp[50];
while ( scanf("%s",word_temp) >= 1){
word = [NSString stringWithFormat:@"%s", word_temp];
printf("%s \n",[word UTF8String]);
}
输出(按预期):
M
Blue
Balae
如果输入的单词有空格,则上面的代码将空格后的单词打印到下一行,因为scanf会将字符读入缓冲区直到遇到空格或换行符。为解决此问题,我更改了scanf的格式说明符因此它应该读入缓冲区,直到遇到换行符为止。
输入:
M
Blue Whale
Balae
代码:
NSString *word;
char word_temp[50];
while ( scanf("%[^\n]s]",word_temp) >= 1){
word = [NSString stringWithFormat:@"%s", word_temp];
printf("%s \n",[word UTF8String]);
}
预期输出:
M
Blue Whale
Balae
实际输出:
// ~ no response on stdout ~
如何读取包含多个单词和空格的行并将其转换为NSString对象?