我有这样的代码:
char arch[80];
fgets (arch, sizeof(arch), stdin);
当我访问的arch
值它显示的值I从stdin
进入,然后是一个讯问标记,为什么这发生?
我有这样的代码:
char arch[80];
fgets (arch, sizeof(arch), stdin);
当我访问的arch
值它显示的值I从stdin
进入,然后是一个讯问标记,为什么这发生?
我的猜测是它代表了\n
行终止符,无论您用什么来检查arch
的值。 SO有很多有关线路终端的问题,我相信你可以很容易地找到的的方式来处理它。
fgets()
存储其后的换行符:
与fgets()从流至多一个小于大小的字符读取和 并将它们存储到缓冲器由s指向。读取在 EOF或换行符后停止。如果读取换行符,则将其存储到缓冲区中。 '\ 0'存储在缓冲区中的最后一个字符之后。
如果您在某种调试器中检查变量,可能是换行符显示为“?”,或者是“询问标记”所表达的任何内容。
什么是SO?我认为fgets会比scanf更好...我试图从标准输入中获取文件名,我不想要'?'在上面。 – cracq
SO是堆栈溢出。如果你知道它在那里,剥掉换行符就像'arch [strlen(arch)-1] = 0'一样简单。 –