C的简单文件读写示范

来源:互联网 发布:windows命令行解压zip 编辑:程序博客网 时间:2024/05/27 20:20

C的简单文件读写示范

  在C中,通过fopen()函数来打开文件,在程序结束前必须用fclose()函数关闭文件

  1. 打开/关闭文件

    1. fopen()函数原型: FILE* fopen(const char* filename, const char *mode)
      参数一: 文件名
      参数二: 打开模式
      返回值: 成功打开返回文件指针,打开失败返回NULL

    2. fclose()函数原型: int fclose(FILE *fp)
      参数一: 文件指针
      返回值: int类型的数值,返回1代表成功关闭
    使用示例:char* fileName = "文件名";char* mode = "r";FILE* f = fopen(fileName, mode);....fclose(f);
  2. 常用文件读写:

    1. 读: fsanf()
      函数原型:
          int fscanf(FILE *stream, const char *format[, address, …]);
      参数一: 文件指针
      其他参数: 其他参数: 格式与scanf(“%d”, &a);一样,需要用到占位符
      返回值: 成功读取的字符的个数
          如果遇到错误或遇到end of file,返回值为EOF。

    2. 写: fprintf()
      函数原型:
          int fprintf(FILE* stream, const char* format[, argument, …]);
      参数一: 文件指针
      其他参数: 格式与printf(“%s参数%d”, “可选”, 1);一样,需要用到占位符
      返回值: 已输出的字符的个数

      PS: [, argument, …] 中,被[]括起来的参数都是可选参数(需要时可以有,不需要时可以没有)
        如: printf(“Hello World”); 就没用到可选参数
        printf(“%s %s”, “Hello”, “World”);就用到了两个可选参数

    3. 读取完毕feof()
      函数原型: int feof(FILE *stream)
      参数一: 文件指针
      返回值: 1读取完毕,0未读取完毕
  3. 注意:

    1. 确定文件读写的模式mode

    2. 打开文件后,都得用fclose()关闭该文件

    3. 若文件为空(没内容),则不能使用fclose()

    4. 用循环从文件中读取相同格式的数据时,判断条件为feof()

    5. 读取文件前,得检测文件是否存在
      存在就用读取其数据
      不存在就用用”w”,创建该文件

    6. 由于编码问题,以’wb’【二进制】模式打开的文件,在写入含有’\n’的文本后,在windows自带的记事本看不到换行
  4. 简单示例

#include <stdio.h>main(){    FILE* data_stu=fopen("学生信息管理系统_data.txt", "r");    if(data_stu==NULL)  // 文件不存在, 新建该对应的数据文件, 并写入必要的数据    {        FILE* data_stu_2 = fopen("学生信息管理系统_data.txt","w");        fprintf(data_stu_2,"姓名,学号,数学,语文,英语,平均分\n"); // 写入信息说明        fprintf(data_stu_2,"小明,A10,100,20,30,50\n");        // 写入一个学生的数据        fclose(data_stu_2);    }else               // 仅在文件存在且内容不为空    {        char rubbish[50];        // 读取数据时, 每次都得看检测能否读取        if( !feof(data_stu) )            fscanf(data_stu,"%s\n",rubbish); //读取信息说明       // 循环读取学生数据        while( !feof(data_stu) )        {            //步骤省略            break        }        // 仅在文件存在且不为空时, 关闭文件        fclose(data_stu);    }}// data_stu是在文件存在且内容不为空时,才关闭// data_stu_2是在文件不存在, 用于新建数据文件的, 写入必要的数据后便在{}中关闭了该文件