【发布时间】:2020-08-10 16:32:55
【问题描述】:
while ((eat = getchar()) != '\n' && eat != EOF); // where 'eat' is long long eat
这是我正在使用的线路。
问题,你问?啊哈!我必须按[ENTER] 两次,才能真正将输入“发送”到我的程序。 (我希望这是在 scanf 和 fgets 之后工作的函数中)
这似乎让人想起单独使用 getchar() ,但我是新手,我会通过删除 getchar() 来解决这些问题,这当然不能在这里完成。 p>
我很困惑该怎么做,以及是否有可能实现一个不强制用户按两次[ENTER] 键的简单解决方案.
更大更好的代码 sn-p:
int num,q=0; static int pins[8]; char pswd[9]; char bad =1,Y_N;
while(bad == 1) {
printf("\nEnter (8 char) Password : ");
getchar();
fgets(pswd,sizeof(pswd),stdin);
int len = strlen(pswd);
if(pswd[len-1] == '\n'){
pswd[len-1] = '\0';
len--;
}
if(len < 8)
printf("\nPassword less than 8 characters.\nPlease Retry.\n");
else
bad = 0;
}
while ((eat = getchar()) != '\n' && eat != EOF);
编辑:
我犯了一个愚蠢的错误,这个错误不是由循环本身引起的,而是因为函数(该代码是其中的一部分)被调用的代码。那个地方的一个额外的getchar() 导致了这个错误。它通过删除额外的getchar() 来解决。感谢所有帮助我解决此问题的人,我向你们所有人道歉。
【问题讨论】:
-
@pmg 这当然是个好建议,我打算坚持下去,但我需要一些适用于两者的东西
-
您需要显示更多代码,很难说为什么这不起作用。
-
@Barmar 它可能无法正常工作,因为我使用了 scanf ?
-
这取决于您如何使用
scanf()。例如,请参阅stackoverflow.com/questions/15740024/…。 -
不要
while(!feof())...见stackoverflow.com/questions/5431941/…
标签: c while-loop buffer stdin getchar