首页 > 编程笔记 > C语言笔记 阅读:12

C语言fscanf()和fprintf()函数的用法(非常详细,附带实例)

在 C 语言中,借助 fscanf() 和 fprintf() 函数可以实现格式化读写文件,即对文本文件读写按照指定数据类型读取数据。

fscanf() 和 fprintf() 函数的用法跟 scanf() 和 printf() 函数的用法差不多,fscanf() 和 fprintf() 函数的读写对象是文本文件,而 scanf() 和 printf() 函数的读写对象是键盘和屏幕。

fprintf() 函数的语法如下:
fprintf(文件指针,格式控制字符,参数列表);

fscanf() 函数的语法如下:
fscanf(文件指针,格式控制字符,地址列表);

对比 scanf() 和 printf() 函数的语法格式不难发现,fscanf() 和 fprintf() 函数只是比 scanf() 和 printf() 函数多了个文件指针。

【实例】创建一个文本文件,用格式化形式将学生的学号、姓名和成绩等信息写入文件中。

在这个程序中,先创建一个学生的结构体,里面包含学生的学号、姓名和成绩等信息。然后创建一个结构体数组,从键盘输入学生的信息保存在结构体数组中。创建一个文件,将数组的信息写入文件中。

具体代码如下:
#include <stdio.h>
#include <stdlib.h>
#define FILESTR "E:\c.dat" //定义文件路径
#define STU_NUM 2 //学生数

struct stu{
    char name[10]; //学生名称
    int num; //学生学号
    float Chinese,math,English;
};

int main()
{
    FILE *fp;
    struct stu stu1[STU_NUM];
    int i;

    printf("请输入学生的信息: \n");
    for(i=0;i<STU_NUM;i++)
    {
        scanf("%d %s %f %f %f",&stu1[i].num,stu1[i].name,&stu1[i].Chinese,
              &stu1[i].math,&stu1[i].English);
        //输入学生的学号、姓名和各科成绩
    }

    if((fp=fopen(FILESTR,"w"))==NULL)
    {
        printf("error: cannot open file!\n");
        exit(0);
    }

    for(i=0;i<STU_NUM;i++)
    {
        fprintf(fp,"%d %s %2.1f %2.1f %2.1f",stu1[i].num,stu1[i].name,
            stu1[i].Chinese,stu1[i].math,stu1[i].English);
         fprintf(fp,"\n");
    } //将数组stu1中的信息写入文件中
    fclose(fp);
   
    return 0;
}
运行程序,输出的数据如下:

请输入学生的信息:
1 1 1.0 1.0 3.000
2 3 3.0 3.0 4.0


打开 c.dat 文件,文件中的内容为:
1 1 1.0 1.0 3.0
2 3 3.0 3.0 4.0

C语言读写文件的注意事项

在 C 语言中,打开文件后就可以对其进行读写操作,打开文件实际上是建立一个信息缓冲区,数据实际上并没有直接写入文件,而是被存储在缓冲区(一般是内存中),执行 fcolse() 函数后才将数据送入文件中,然后关闭文件。

C语言中的文件分为两种:ASCII 文件(文本文件)和二进制文件。

可以用任何文字处理程序阅读的简单文本文件、图形文件及文字处理程序等计算机程序都属于二进制文件,这些文件含有特殊的格式及计算机代码。

文本文件的数据以字符的形式存放在磁盘中,所以文本文件的内容是可以直接读懂的;而在读二进制文件时会原封不动地读取文件的全部内容,写二进制文件也是将文件缓冲区的内容全部写入,不进行转换。

二进制文件不能直接读懂,这是文本文件和二进制文件最直观的区别。

C语言中用“\n”便可实现换行,而 Windows 操作系统需要用“\r”和“\n”才能实现换行:
打开文本文件的方式不带“b”(r、w、a、r+、w+、a+),打开二进制文件的方式是带“b”的(rb、wb、ab、rb+、wb+、ab+),“b”的作用就是在读写文件时进行换行符的转换。

二进制文件要用二进制的方式打开和读写,文本文件则要用文本的方式打开和读写,规范使用,避免出现错误。

相关文章