its*_*ode 8 c whitespace scanf
我想从控制台获取字符数组,它还包括空格,我在C中知道的唯一方法是scanf,但是一旦用空格命中它就会错过停止输入.我该做什么?
这就是我在做的事情.
char address[100];
scanf("%s", address);
Run Code Online (Sandbox Code Playgroud)
Car*_*rum 14
尝试使用fgets().它将从您选择的流中读取一个完整的行(stdin,我想您正在寻找).您案例的一个例子:
char address[100];
fgets(address, 100, stdin);
Run Code Online (Sandbox Code Playgroud)
fgets()最多会读取第二个参数中传递的字符数(减1).没有缓冲区溢出,你将得到整行,包括换行符(或最多EOF).请注意,由于要读取的最大字符数是参数之一,因此您可能会获得部分行.检查返回的字符串中的最后一个字符是否为'\n',并且您将知道您有一个完整的行.EOF检测也非常简单; 一个NULL返回值和检查,errno应该帮助你.
感谢Chris(下面),关于部分线的观点.
你可以尝试这样的事情:
char str[100];
scanf("%99[0-9a-zA-Z ]s", str);
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)