1.打开与关闭文件
打开文件 FILE* pf = fopen("filename", "mode");
参数说明:
-
"filename":文件名(可以带路径); -
"mode":打开方式,常见如下:
| 模式 | 含义 |
|---|---|
"r" | 只读(文件必须存在) |
"w" | 只写(文件存在则清空原内容,不存在则创建) |
fopen 的返回值是一个 FILE* 指针,打开失败时返回 NULL,应及时判断
FILE* pf = fopen("data.txt", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
fclose(pf);
pf = NULL;
2.fgetc 与 fputc 的使用(按字符读写)
fgetc(FILE* pf):每次从文件读取一个字符,返回值类型为 int。
-
成功:返回字符的 ASCII 值;
-
失败或到达文件末尾:返回
EOF。
FILE* pf = fopen("text.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
int ch = 0;
while ((ch = fgetc(pf)) != EOF)
{
printf("%c", ch);
}
fclose(pf);
pf = NULL;
return 0;
fputc(int ch, FILE* pf):将一个字符写入到文件中
FILE* pf = fopen("text1,txt", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
int i = 0;
for (i = 'a';i <= 'z'; i++)
{
fputc(i, pf);
}
fclose(pf);
pf = NULL;
return 0;
3.fgets 与 fputs 的使用(按字符串读写)
fgets(char* buf, int size, FILE* pf):
-
每次从文件中读取最多
size - 1个字符,保存到buf中; -
读到换行符或 EOF 时停止;
-
返回值为
buf指针,失败时返回NULL。
FILE* pf = fopen("text1.txt", "r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
char ch[100] = { 0 };
while(fgets(ch,10,pf)!=NULL)
{
printf("%s", ch);
}
fclose(pf);
pf = NULL;
return 0;
fputs(const char* str, FILE* pf):将字符串写入到文件中(不自动添加换行符)。
FILE* pf = fopen("text.txt", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
fputs("hello word", pf);
fclose(pf);
pf = NULL;
return 0;
总结
| 函数名 | 功能 | 备注 |
|---|---|---|
fopen / fclose | 打开 / 关闭文件 | 打开失败需检查是否为 NULL |
fgetc / fputc | 按字符读取 / 写入 | 一次一个字符,适合处理二进制或逐字输出 |
fgets / fputs | 按行读取 / 写入 | 适合处理文本文件,每次读/写一段字符串 |

被折叠的 条评论
为什么被折叠?



