目录
[C 输入 & 输出](#C 输入 & 输出)
[C 文件的读写](#C 文件的读写)
[fputc 函数](#fputc 函数)
[fputs 函数](#fputs 函数)
[fprintf 函数](#fprintf 函数)
文件操作
文件和流的介绍
变量、数组、结构体等数据在运行时存储于内存中,程序结束后内存数据会被释放。若需长久保存数据,可写入文件或数据库。
文件是数据源的一种(如 word 文档、txt 文件、excel 文件、avi 文件等),作用是保存数据(如图像、视频、声音等)。
在 C 程序中,文件数据的输入/输出以"流(stream)"方式进行:
- 输入流:数据从数据源(如文件)流向程序(或内存)。
- 输出流:数据从程序(或内存)流向数据源(如文件)。

C 输入 & 输出
-
输入:向程序(或内存)写入数据,数据可来自键盘、文件或网络。C 语言通过内置函数读取输入并写入程序。
-
输出:在屏幕、打印机或文件中显示(或保存)数据。C 语言通过内置函数将数据输出到指定载体。
注: scanf() 和 printf() 函数:C 语言 I/O(输入/输出)常用这两个函数。
- int scanf(const char *format,...) :从标准输入流 stdin 读取输入,按 format 解析输入。
- int printf(const char *format,...) :将输出写入标准输出流 stdout ,按格式产生输出。
实例:
cs
#include <stdio.h>
int main( ) {
int i;
printf( "Enter a value :\n"); // 标准输出函数
scanf("%d", &i); // 标准输入函数
printf( "You entered: %d \n", i);
return 0;
}
C 文件的读写
文件(无论是文本文件还是二进制文件)都代表一系列字节。C 语言既提供顶层访问函数,也提供底层调用处理存储设备上的文件。
创建/打开文件
使用 fopen() 函数创建或打开文件,初始化 FILE 类型对象(包含控制流的必要信息)。
函数原型:
cs
FILE* fopen(const char* filename, const char* mode);
说明: filename 是字符串,用来命名文件,mode 访问模式:
|----|-------------------------------|
| 模式 | 描述 |
| r | 只读,打开已有文本文件。 |
| w | 只写,文件不存在则创建,存在则截断(清空原有内容)后写入。 |
| a | 追加写,文件不存在则创建,存在则从文件末尾写入。 |
写入文件
C标准库提供按字符或固定长度字符串形式读/写文件的函数。
fputc 函数
函数原型:
cs
int fputc(int c, FILE* fp);
说明: 将参数 c 的字符值写入 fp 指向的输出流,成功返回写入的字符。
fputs 函数
函数原型:
cs
int fputs(const char* s, FILE* fp);
说明: 将字符串 s 写入 fp 指向的输出流,成功返回非负值,出错返回 EOF 。
fprintf 函数
函数原型:
cs
int fprintf(FILE* fp, const char *format,...);
**功能:**与 fputs() 类似,将字符串写入文件。
实例:
cs
#include <stdio.h>
int main() {
//创建一个文件指针
FILE *fp = NULL;
//打开该文件
fp = fopen("D:/demo.txt", "w");
//将内容写入到文件中
fputs("你好,北京!\n", fp);
fprintf(fp, "你好,世界!\n");
//关闭文件(确保内容保存)
fclose(fp);
printf("创建,写入信息完成");
}
读取文件
fgets函数
函数原型:
cs
char* fgets(char *buf, int n, FILE *fp);
**说明:**此函数按行读取数据,从文件中读取一行数据(包括换行符'\n'),并将内容存储到指定缓冲区 buf 。 n 是缓冲区大小, fp 是文件指针。成功读取返回 buf (字符串首地址),到达文件末尾或读取失败返回 NULL 。
实例:
cs
#include <stdio.h>
int main() {
//创建一个文件指针
FILE* fp = NULL;
//定义一个缓冲区
char buff[1024];
//打开文件
fp = fopen("D:/demo.txt", "r");
//循环读取fp指向的文件内容,读到NULL时结束
while (fgets(buff, 1024, fp) != NULL) {
printf("%s", buff);
}
}
关闭文件
使用完文件后(读,写),一定要将该文件关闭。
关闭文件,使用 fclose() 函数。
函数原型:
cs
int fclose( FILE* fp );
如果成功关闭文件, fclose() 函数返回零。此时,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。