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.打开文件时常用的控制字符
