主函数是
int main()
{
int value=0;
value=read();
printf("数字是%d\n",value);
return 0;
}
一些测试用力
1).15sdd\n
2).16 1456\n
3).aa 7\n
4)a\n
read()函数的写法一:
int read()
{
int value=0;
printf("请输入一个整数:\n");
while(!scanf("%d",&value))
{
scanf("%*[^\n]");//表示读入所有不是换行的字符串,这些都不保存,然后返回
scanf("%*c");//表示读入一个字符,但是这个字符不保存到变量里
printf("请再次输入一个整数:\n");
}
scanf("%*[^\n]");
scanf("%*c");
return value;
}
read()函数的写法二
int read()
{
char c;
int value=0;
printf("input a number:\n");
while(!scanf("%d",&value))
{
// fflush(stdin);//注意gcc编译器不能使用这个语句,不支持
while(c=getchar()!='\n'&&c!=EOF);//注意后面的分号,表示一致执行这个语句,否则循环内的内容是下一句。
printf("input a number again:\n");
}
//fflush(stdin);
while(c=getchar()!='\n'&&c!=EOF);
return value;
}
小知识点
%d的方式输入的时候,前面的空白字符是忽略的,同时输入数字的时候是以空格,换行等作为分割的,这些字符还留在输入缓冲区,没有读入,但是下一次输入时,对先导的这些东西忽略,所以输入正确,但是下一次输入是%c的时候对这个不能忽略,会出现问题!