如何在C中输入空格

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(下面),关于部分线的观点.

  • 虽然我们讨论这个问题(这是相关的),但是由于`scanf()`处理空格的奇怪方式,建议不要混合调用`fscanf()`并调用`fgets()` (或其他读取实用程序)在同一文件句柄上.最常推荐的模式是使用`fgets()`将代码读入字符串,然后在该字符串上使用`sscanf()`.这样,我们拥有两全其美,我们安全地拥有它们. (2认同)

Nic*_*kis 7

你可以尝试这样的事情:

char str[100];
scanf("%99[0-9a-zA-Z ]s", str);
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)