【发布时间】:2015-12-13 01:43:37
【问题描述】:
我的程序可以接受任意长度的数字或空输入。但是,如果输入为空(空格或换行符),程序将继续等待输入。我也尝试过fgets,但如果按下空格/换行符,它仍然会等待更多不是空格/换行符的输入,然后再关闭。
简化代码:
#include <stdio.h>
main()
{
int num;
scanf("%i",&num);
printf("%i",num);
}
输入:
363792
输出:
363792
期望:
输入:
输出:
我是 C 的新手,很难做到这一点。
使用 fgets 的尝试:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int n;
char s[20];
fgets(s,20,stdin);
n = atoi(s);
printf("%i",n);
}
编辑:原来我没有正确编译代码。所以每次我尝试进行更改时,它只是使用scanf查看原始代码。
【问题讨论】:
-
意思是,是否要忽略空输入(空格或换行符)?
-
如果你没有输入这段代码输出0,是你的愿望吗?
-
scanf无法按预期工作,因为%d跳过了前导空白字符。 -
我切换到 fgets() 并且它有效。我编译代码错误,所以程序在我第一次尝试时仍在使用 scanf。
-
使用 scanf() 和 fgets(),始终检查返回值(不是参数值)以确保操作成功