打开文件
fopen()
: 创建一个新文件/打开一个已有文件, 初始化类型FILE的一个对象, 包含所有用于控制流的必要信息FILE *fopen(const char *filename, const char *mode);
- 模式:
- r: 打开一个已有文本文件, 允许读取
- w: 打开一个文本文件, 允许写入; 若无文件则新建一个; 若有则重新写入
- a: 打开一个文本文件, 追加模式写入; 若无文件则新建一个; 追加内容
- r+: 打开一个文本文件, 允许读写
- w+: 打开一个文本文件, 允许读写; 无文件则新建一个; 若有则重新写入
- a+: 打开一个文本文件, 允许读写; 无文件则新建一个; 读取从头开始, 写入追加
关闭文件
fclose()
:int fclose(FILE *fp);
- 关闭成功返回0
- 关闭失败返回EOF
写入文件
fputc()
: 把参数c的字符值写入fp指向的输出流, 成功则返回写入字符, 失败则返回EOFint fputc(int c, FILE *fp);
fputs()
: 将字符串s写入fp指向的输出流, 成功则返回非负值, 失败则返回EOFint fputs(const char *s, FILE *fp);
fprintf()
: 一个字符串写入文件int fprintf(FILE *fp, const char *format, ...)
#include <stdio.h>
int main()
{
FILE *fp = NULL;
fp = fopen("/tmp/test.txt", "w+");
fputs("Shenzhen", fp);
fprintf(fp, "Tianjin");
fclose(fp);
}
读取文件
fgetc()
: 从fp指向的输入文件读取一个字符, 返回读取的字符, 失败则返回EOFint fget(FILE * fp);
fgets()
: 从fp指向的输入流读取n-1个字符, 若途中遇到换行符/文件末尾EOF, 返回读取到的字符char *fgets(char *buf, int n, FILE *fp);
fscanf()
: 从文件读取字符串, 首个空格/换行符停止int fscanf(FILE *fp, const char *format, ...)
#include <stdio.h>
#include <stdio.h>
int main()
{
FILE *fp = NULL;
char buff[255];
fp = fopen("/tmp/test.txt", "r");
fscanf(fp, "%s", buff);
printf("1: %s\n", buff );
fgets(buff, 255, (FILE*)fp);
printf("2: %s\n", buff );
fgets(buff, 255, (FILE*)fp);
printf("3: %s\n", buff );
fclose(fp);
}
首先,fscanf()方法只读取了This,因为它在后边遇到了一个空格.其次,调用fgets()读取剩余的部分,直到行尾.最后,调用fgets()完整地读取第二行.