一、文件操作
1.1 文件打开
- 函数:
FILE *fopen( const char *filename, const char *mode );
- filename:文件指针
- mode:打开模式,如下图所示:
1.2 关闭文件
- 函数:
int fclose( FILE *fp );
- fp:文件指针
- 返回结果:成功关闭文件,返回0;否则返回EOF(定义在stdio.h中的一个常量)
1.3 写入字符
- 函数:
int fputc( int c, FILE *fp );
- 返回结果:成功写入,返回0;否则返回EOF,即-1
1.4 写入字符串
- 函数1:
int fputs( const char *s, FILE *fp );
- 返回结果:成功写入,返回非零值;否则返回EOF,即-1
- 函数2:
int fprintf(FILE *fp, const char *s);
- 返回结果:成功写入,返回字符串字符个数;否则返回EOF,即-1
1.5 读取文件
- 函数1:
int fgetc( FILE * fp );
- 返回结果:成功返回读取的字符,否则放回EOF
- 函数2:
char *fgets( char *buf, int n, FILE *fp );
- 返回结果:成功返回读取的字符串,否则返回EOF
- 注意:只读取n-1个字符,并在结尾加上NULL终止字符串,无法读取\n,EOF
- 函数3:
char fscanf(FILE *fp, "%s",char *buff);
- 无法读取空格,EOF,\n
- 代码实现:
#include <stdio.h> #include <string.h> int main() { FILE *fp = NULL; char buff[40]; fp = fopen("test.txt","w+"); int s = fprintf(fp, "xiaoma gede biji.....\n"); // 写入成功,返回字符的个数 int s1 = fputs("string......\n",fp); // 写入成功,返回非零值 char c = fputc('x',fp); // 写入成功返回写入的字符 int i = fclose(fp); // 关闭成功返回0 printf("i = %d\nc = %c\ns = %d\ns1 = %d\n",i, c, s, s1); fopen("test.txt","r+"); char c_r = fgetc(fp); // 读取文件的第一个值,成功返回读取值,否则返回EOF(-1) /* fgetc和fgets会相互影响,fgetc会读取第一个字符, fgets只能从剩下的地方进行读取,无法读取\n,文件末尾的EOF */ fgets(buff,8,fp); // 读取6-1个,最后追加一个null printf("c_r = %c\nbuff = %s\n",c_r, buff); fscanf(fp, "%s", buff); // 无法读取空格,换行符,EOF printf("s_fscanf:%s",buff); fclose(fp); return 0; }
- 运行结果:
i = 0 c = x s = 22 s1 = 1 c_r = x buff = iaoma g s_fscanf:ede