函数功能
fscanf()函数用于从参数stream的文件流中读取format格式的内容,然后存放到...所指定的变量中去。字符串以空格或换行符结束(实验1中会对它进一步说明)
函数格式
字符格式说明
关于输入输出
(stdin、stdout、stderr)启动一个C语言程序时,操作系统环境负责打开三个文件,并将这3个文件的指针提供给该程序。这3个文件分别为标准输入(stdin)、标准输出(stdout)、标准错误(stderr)。它们在<stdio.h>中声明,大多数环境中,stdin指向键盘,stdout、stderr指向显示器。之所以使用stderr,若因某种原因造成其中一个文件无法访问,相应的诊断信息要在该链接的输出的末尾才能打印出来。当输出到屏幕时,这种处理方法尚可接受,但如果输出到一个文件或通过管道输出到另一个程序时,就无法接受了。若有stderr存在,即使对标准输出进行了重定向,写到stderr中的输出通常也会显示在屏幕上。exit():在主程序main中,语句return expr等价于exit(expr)。但是,函数exit有一个优点,它可以从其他函数中调用,并且可以用查找程序查找这些调用。exit(0)为正常退出,exit(1)只要里面的参数不为零,为非正常退出。
fscanf()与scanf()的区别
fsanf()函数用于从文件流中读取数据,scanf()函数用于从标准输入(键盘)中读取数据。如果将fscanf()函数内文件流指针设为stdin,这时候可以替代scanf()函数。
实验1
功能:读取键盘输入的内容并输出到屏幕上
源程序:
#include<stdio.h>
main()
{
char str[20]; //存放输入的字符串
printf("Please Input string: ");
//将键盘输入的内容,以字符串%s的格式存放到str中去
fscanf(stdin,"%s",str);
printf("You have input:%s\n",str);
}
执行结果:
分析:由执行结果可以看出,第一次输入“Hello World”时,输出为“Hello”,这是因为fscanf()函数遇到空格或者换行时结束。为了排除存放字符数组的内存长度不够的原因,第二次输入“HelloWorld”时,输出结果为“HelloWorld”。可以看出fscanf()函数确实是遇到空格或者换行时结束。
实验2
功能:读取字符串和数字,再输出到屏幕。
源程序:
#include<stdio.h>
main()
{
char str[20]; //存放输入的字符串
int a;//存放输入的整形数据
printf("Please Input : ");
//将键盘输入的内容,以字符串%s的格式存放到str中去
fscanf(stdin,"%s%d",str,&a);
printf("字符串内容为:%s\n",str);
printf("整形数据为:%d\n",a);
}
执行结果: