逐层分析while((scanf("%d",&a))!=EOF)
用这种循环的写法,可以解决一些需要循环到文件结束(也即文件不结束就循环)的问题。
我们先来看下这个句子,while((scanf("%d",&a))!=EOF)
逐层分析:
最外层:
是我们熟悉的while循环的一部分,
while循环:while(表达式){循环体}中的while(表达式)
内层(从左到右):
Ⅰ.scanf()函数语句
附:scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件(stdio.h)里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。(参考:百度百科)
Ⅱ."!=“C语言中的运算符号,意为"不等于”。
Ⅲ.EOF,是一个计算机术语,全称为"End Of File",也就是文件结束符
附:在C语言在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以[字符]的[ASCII]代码值的形式存放。我们知道,[ASCII代码值]的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。(参考:百度百科)
在逐层分析之后,来看一下一个习题,加深一下对while((scanf("%d",&a))!=EOF)的认识:
题目难度适中,建议先尝试写一下,
题目:输入数字,输出对应得ASCII值
输入要求:输入包含由空格、换行等分隔的正整数,处理到文件末尾(EOF)。
输出要求:输出相应的ASCII值且输出末尾无换行符。
C语言:
#include<stdio.h>
int main()
{
int a;
while((scanf("%d",&a))!=EOF)
{
printf("%c",a);
}
return 0;
}
作者:Code_流苏
如有错误,还望指正!
最后,希望大家多多点赞支持!