← 返回首页
C语言系列教程(三十六)
发表时间:2021-03-31 16:47:17
读写字符文件

1.读写字符文件常用函数

函数 说明
int fgetc (FILE *fp); 从文件中读取一个字符
int fputc ( int ch, FILE *fp ); 向指定的文件中写入一个字符
char fgets ( char str, int n, FILE *fp ); 从指定的文件中读取一个字符串,并保存到字符数组中
int fputs( char str, FILE fp ); 向指定的文件写入一个字符串

fgetc() 和 fputc() 函数每次只能读写一个字符,速度较慢;效率太差我们这里不做讨论。实际开发中经常使用fgets()和fput()这样每次读写一个字符串或者一个数据块,这样能明显提高效率。

注意:fgets() 最多只能读取一行数据,不能跨行。在C语言中,没有按行读取文件的函数,我们可以借助 fgets(),将 n 的值设置地足够大,每次就可以读取到一行数据。

实例:

读取并打印当前源程序文件,并且保存到dest.c目标文件中。

#include <stdio.h>
#include <stdlib.h>
#define N 500  //每一行最多读取500个字符
int main() {
    FILE *fin;
    FILE *fout;
    char str[N + 1];

    //判断文件是否打开失败
    if ( (fin = fopen("e:\\test\\test.c", "rt")) == NULL ) {
        puts("打开文件失败!");
        exit(0);
    }else{
         //创建输出文件 
     fout = fopen("e:\\test\\dest.c", "wt");
     }
    //循环读取文件的每一行数据
    while( fgets(str, N, fin) != NULL ) {
        printf("%s", str);
        fputs(str, fout);
    }

    //操作结束后关闭文件
    fclose(fin);
    fclose(fout);

    return 0;
}

运行结果:

并且在e:/test/dest.c 有目标文件生成,且内容与test.c完全相同。

2.打开文件时常用的控制字符