关于scanf的返回值请参考我的另一篇文章
scanf的返回值
以及另一篇博文关于scanf的返回值
先看一下下面的题目:
//用代码表示以下测试条件//
- scanf()读取一个名为x的double类型值且失败
- scanf()成功读入一个整数
答案如下:
scanf("%lf",x) != 1//或者写成scanf("%lf",x) == 0也行
scanf("%d",x) == 1
在这里scanf的返回值作为了一个条件,这种常常放到循环中应用
例如:
while (scanf("%s %c %c", str, &oldchar, &newchar) == 3)
/* 或!= EOF , 但前者更好 */(这其实是上面其中一篇文章里面的一段代码)
关于这段代码我想要解释的是为什么%s与%c之间要加一个空格,上面的文章中也有解释,但我想再补充一下,因为我昨天才刚刚学过这一个知识点,即:“%c”与“ %c"的区别(第二个%c后面有一个空格,第一个没有)
详见我的另一篇博文%c前面加空格的作用
具体的可以自己尝试敲一个代码运行试一下,实践出真知
关于EOF的应用在你看了上面的文章之后可以尝试运行一下下面的程序:
//输入n和n个整数,求n个整数的和
#include<stdio.h>
int main()
{
int i,n,sum,a;
printf("请输入n和n个整数");
while(scanf("%d",&n) != EOF)
{
sum = 0;
for(i = 1;i <= n;i++)
{
scanf("%d",&a);
sum = sum + a;
}
printf("%d\n", sum);
}
return 0;
}
另附文章参考EOF的输入与应用
== 如有错误欢迎读者提出与指点,定感激不尽==