如何通过按[CTRL]+;[D] 在scanf()上?
(系统:Linux Mint 18.1) 如何通过在如何通过按[CTRL]+;[D] 在scanf()上?,c,eof,C,Eof,(系统:Linux Mint 18.1) 如何通过在scanf()处按[CTRL]+[D]来实现EOF? 当时它只与[CTRL]+[C]一起工作, 然而,我们的任务是通过在scanf()中显式地[CTRL]+[D]来实现它 我的职能如下: float getFloat1() { float num = 0.0; char term; char loop = 'y'; while (loop == 'y') { printf("Please enter a numbe
scanf()
处按[CTRL]+[D]来实现EOF?
当时它只与[CTRL]+[C]一起工作,
然而,我们的任务是通过在
scanf()
中显式地[CTRL]+[D]来实现它我的职能如下:
float getFloat1()
{
float num = 0.0;
char term;
char loop = 'y';
while (loop == 'y')
{
printf("Please enter a number: ");
if (scanf("%f%c", &num, &term) != 2 || term != '\n')
{
printf("[ERR] Invalid input.\n");
while ((getchar()) != '\n'); // Flushes the scanf() input buffer
}
else
{
printf("[OK] Valid input: %f\n", num);
loop = 'n';
}
}
return num;
}
我非常感谢任何帮助、链接、参考和提示 使用变量存储scanf的结果。然后比较块中的变量,查看是否捕获了EOF
float getFloat1()
{
float num = 0.0;
char term;
char loop = 'y';
int result = 0;
while (loop == 'y')
{
printf("Please enter a number: ");
if ((result = scanf("%f%c", &num, &term)) != 2 || term != '\n')
{
if ( result == EOF) {
printf ( "EOF\n");
break;
}
printf("[ERR] Invalid input.\n");
while ((getchar()) != '\n'); // Flushes the scanf() input buffer
}
else
{
printf("[OK] Valid input: %f\n", num);
loop = 'n';
}
}
return num;
}
本声明:
while ((getchar()) != '\n');
这是一个检查EOF的地方。建议:
int ch;
while( ( ch = getchar() ) != EOF && '\n' != ch );
关于在调用
scanf()
时检查EOF的问题有点不清楚,谢谢,对我来说效果很好!是否有一种方法不仅可以退出函数,还可以通过按[CTRL]+[D]退出整个程序?