【发布时间】:2013-12-23 17:55:16
【问题描述】:
我正在使用这段代码来验证在结构中输入的长度,以便文件不会爆炸,但我认为我执行不正确。
do
{
inputflag=0;
printf("Passenger ID no: ");
gets(newRes.idCard);
if((strlen(newRes.idCard))>7)
{
printf("invalid input \n");
inputflag=1;
}
fflush(stdin);
} while(inputflag==0);
【问题讨论】:
-
不要使用
fflush(stdin)。这是非法的,会导致未定义的行为! -
当您检查输入的大小时,损坏已经造成...尝试使用 fgets 代替。
-
如果没有 fflush(stdin) 会更糟
-
您最好在实现标头中找到
gets()的原型并将其注释掉。它是如此卑鄙和邪恶,它已被该语言弃用,并且在未来的版本中将不再支持。请改用fgets()。 -
您的 fflush 应该在打印后出现在标准输出上。