我想从控制台获取字符数组,它还包含空格,我知道c语言中唯一的方法是scanf,但是一旦它碰到空格,它就错过了停止输入。我该怎么办?
这就是我正在做的。
char address[100];
scanf("%s", address);
最佳答案
尝试使用fgets()。它将从您选择的流中读取完整的行(stdin,我猜您正在寻找)。例如:
char address[100];
fgets(address, 100, stdin);
fgets()最多读取第二个参数中传递的字符数(减1)。没有缓冲区溢出,您将得到整行直到并包括一个换行符(或直到eof)。注意,因为要读取的最大字符数是参数之一,所以可能得到部分行。检查返回字符串中的最后一个字符是否为'\n',您将知道您有一个完整的行。eof检测也非常简单;返回值
NULL
和检查errno
应该可以帮助您解决这个问题。感谢chris(下面)关于部分线的观点。