Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在fgets之前清除输入缓冲区_C++_String_Input_Buffer_Fgets - Fatal编程技术网

C++ 在fgets之前清除输入缓冲区

C++ 在fgets之前清除输入缓冲区,c++,string,input,buffer,fgets,C++,String,Input,Buffer,Fgets,今天我发现gets(char*)和scanf(“%s”)一样被弃用,因为它们可以插入所有字符,并且可以从字符串内存空间中取出。我们应该使用fgets(char*,sizeof char*,stdin),而不是它们,但是在执行此函数之前,我在清理输入缓冲区时遇到了一个问题。使用scanf和get,我使用此函数: void clean_stdin(void) { int c; do { c = getchar(); } while (c != '\n' &&a

今天我发现
gets(char*)
scanf(“%s”)
一样被弃用,因为它们可以插入所有字符,并且可以从字符串内存空间中取出。我们应该使用
fgets(char*,sizeof char*,stdin)
,而不是它们,但是在执行此函数之前,我在清理输入缓冲区时遇到了一个问题。使用
scanf
和get,我使用此函数:

void clean_stdin(void)
{
   int c;
   do {
       c = getchar();
   } while (c != '\n' && c != EOF);
}
但是,如果我将它与
fgets
一起使用,它将在继续执行程序之前等待回车键。我意识到这是因为
fgets
\n
字符放在字符串中(这个函数的另一个不舒服的地方是:/),但我不知道如何在不等待Enter键的情况下清理缓冲区。如果用户插入的字符数超过
sizeof*str
,则会进入下一个字符串,因此可能会有一个清理缓冲区的解决方案。
谢谢你

我不确定我是否理解正确,但如果你想做的只是清理一个缓冲区(缓冲区是一个
char*
),那么你可以做的可能是:memset(缓冲区,0,sizeof(缓冲区));简单的C++解决方案是使用STD::CIN。它们都不起作用。首先,我不认为它可以用来清理stdin缓冲区,但是我尝试了它,但是它在缓冲区中放入了0,所以用户无法插入来自键盘的输入。第二,它似乎什么都没做。如果用户插入的字符数超过
sizeof*str
,则跳转下一个字符串输入