0

可能重复:
fgets 的回车

我有这个代码:

char arch[80];
fgets (arch, sizeof(arch), stdin); 

当我访问它的值时,arch会显示我输入的值stdin后跟一个问号,为什么会发生这种情况?

4

2 回答 2

4

fgets()存储尾随换行符:

fgets() 从流中最多读入一个小于 size 的字符,并将它们存储到 s 指向的缓冲区中。在 EOF 或换行符后停止读取。如果读取了换行符,则将其存储到缓冲区中。'\0' 存储在缓冲区中的最后一个字符之后。

如果您在某种调试器中检查变量,则换行符可能会显示为“?”,或者您所说的“询问标记”。

于 2012-10-23T13:05:27.737 回答
3

我的猜测是它代表了\n你用来检查arch. SO有很多关于线路终止的问题,我相信你可以很容易地找到很多方法来处理它。

于 2012-10-23T13:05:04.977 回答