第一个getchar()实际上是getc(stdin),所以getc(FILE)可以从中读取更多。 getchar()从inputstream或标准input中得到最后一个未处理的字符,按回车是'\ n'。 如果stdin为空,则getchar强制暂停以获取input。 在一个程序中说我首先调用getchar(),stdin是空的,所以它暂停input。 如果我inputab'\ n',第一个getchar()会得到'a'的ascii。 下一次我调用getchar()我会得到b,然后再次getchar()将有'\ n'。
为了certificate这个写代码。
int choice; do { cout << "Enter input:" ; choice = getchar(); cout << "Last getchar(): " << choice << ":" << (char) choice ; if( choice == '0' || choice == EOF) { cout << "Exited loop" << endl; // EOF is ctrl+z in windows break; } }while(true);
我相信stdin是一个全球性的,所以直到getchar()或类似的函数被调用它来清除stream中的字符留在那里,如果你在其他地方使用getchar(),可能会导致错误。 正如人们已经提到的,你可以使用gets(char []),把所有的字符都放到换行符中。 这个问题是你需要一个大于input的char [],否则你会得到错误。 好的是get(char [])清除stdin,所以你可以使一个dumby缓冲区来清除stdin或者处理它。
我希望这是信息。