1
29
谈论
文件已具有
编辑根据OP提出的一个问题: 实际上——是的。人们可能认为stdin(不是重定向的,而是从控制台获取的)是 文件--没人能知道它在哪里结束。输入文件的结尾,其中输入是stdin,必须通过 + D 或 Ctrl键 + Z . |
2
4
|
3
2
|
4
0
测试EOF的方法是检查fread的返回值,然后使用feof:
|
5
0
你的解决方案是标记C++,所以这里有一些C++。
|
6
0
第一个getchar()实际上是getc(stdin),所以getc(FILE)可以从中读取更多内容。getchar()从输入流或stdin中获取最后一个未处理的字符,按enter键是“\n”。如果stdin为空,getchar将强制暂停以获取输入。 假设在一个程序中,我首先调用getchar(),stdin是空的,所以它暂停输入。如果输入ab'\n',第一个getchar()将得到97“a”的ascii。下次调用getchar()时,我将得到b,然后getchar()将再次得到'\n'。
我相信stdin是一个全局的,所以在调用getchar()或类似的函数来清除流之前,字符仍然保留在那里,如果在其他地方使用getchar(),可能会导致错误。正如人们提到的,您可以使用get(char[]),它将换行之前的所有字符放入字符数组。问题是你需要一个大于输入的char[],否则你会出错。好在gets(char[])确实清除了stdin,所以您可以创建一个dumby缓冲区来清除stdin或处理它。 我希望这是有益的。 |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |