C 语言中文件读写操作的基本代码示例
以下是 C 语言中文件读写操作的基本代码示例:
1. 写入文件(使用fprintf
函数)
#include <stdio.h>
int main() {
FILE *fp;
fp = fopen("test.txt", "w"); // 以写入模式打开文件,如果文件不存在则创建,如果存在则清空内容
if (fp!= NULL) {
fprintf(fp, "这是写入文件的示例。\n");
fprintf(fp, "这里是更多的内容。\n");
fclose(fp); // 关闭文件
printf("数据已成功写入文件。\n");
} else {
perror("打开文件时出错");
return 1;
}
return 0;
}
2. 读取文件(使用fscanf
函数)
#include <stdio.h>
int main() {
FILE *fp;
char buffer[100];
fp = fopen("test.txt", "r"); // 以只读模式打开文件
if (fp!= NULL) {
while (fscanf(fp, "%s", buffer)!= EOF) { // 逐词读取直到文件末尾
printf("%s ", buffer);
}
fclose(fp);
} else {
perror("打开文件时出错");
return 1;
}
return 0;
}
3. 使用fgets
和fputs
进行文件读写
写入文件
#include <stdio.h>
int main() {
FILE *fp;
char lines[3][50] = {"第一行内容\n", "第二行内容\n", "第三行内容\n"};
fp = fopen("another_test.txt", "w");
if (fp!= NULL) {
for (int i = 0; i < 3; i++) {
fputs(lines[i], fp);
}
fclose(fp);
printf("数据已成功写入文件。\n");
} else {
perror("打开文件时出错");
return 1;
}
return 0;
}
读取文件
#include <stdio.h>
int main() {
FILE *fp;
char buffer[100];
fp = fopen("another_test.txt", "r");
if (fp!= NULL) {
while (fgets(buffer, sizeof(buffer), fp)!= NULL) { // 逐行读取直到文件末尾
printf("%s", buffer);
}
fclose(fp);
} else {
perror("打开文件时出错");
return 1;
}
return 0;
}
4. 以二进制模式读写文件(使用fread
和fwrite
)
写入结构体数据到二进制文件
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
} Student;
int main() {
FILE *fp;
Student s1 = {1, "张三"};
Student s2 = {2, "李四"};
fp = fopen("students.bin", "wb"); // 以二进制写入模式打开文件
if (fp!= NULL) {
fwrite(&s1, sizeof(Student), 1, fp);
fwrite(&s2, sizeof(Student), 1, fp);
fclose(fp);
printf("结构体数据已成功写入二进制文件。\n");
} else {
perror("打开文件时出错");
return 1;
}
return 0;
}
从二进制文件读取结构体数据
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
} Student;
int main() {
FILE *fp;
Student s;
fp = fopen("students.bin", "rb"); // 以二进制读取模式打开文件
if (fp!= NULL) {
while (fread(&s, sizeof(Student), 1, fp) == 1) {
printf("ID: %d, Name: %s\n", s.id, s.name);
}
fclose(fp);
} else {
perror("打开文件时出错");
return 1;
}
return 0;
}
这些示例涵盖了 C 语言中几种常见的文件读写方式,可以根据实际需求选择合适的方法。在实际应用中,还需要对文件操作的错误情况进行更详细的处理和分析。
在 C 语言中,可以使用fread
和fwrite
函数来实现对二进制文件的读写操作,以下是详细步骤:
写入二进制文件
- 打开文件
使用fopen
函数以二进制写入模式("wb"
)打开文件。例如:
FILE *fp;
fp = fopen("binary_file.bin", "wb");
if (fp == NULL) {
perror("无法打开文件");
return 1;
}
- 准备要写入的数据
可以是基本数据类型(如int
、float
、char
等),也可以是结构体等自定义数据类型。例如,定义一个结构体:
typedef struct {
int id;
float value;
} Data;
Data data_to_write = {1, 3.14};
- 使用
fwrite
函数写入数据
fwrite
函数的原型为size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
,其中:ptr
是指向要写入数据的指针。size
是每个数据元素的大小(以字节为单位)。count
是要写入的数据元素的数量。stream
是指向文件流的指针。
对于上述结构体数据的写入示例如下:
size_t elements_written = fwrite(&data_to_write, sizeof(Data), 1, fp);
if (elements_written!= 1) {
perror("写入数据时出错");
fclose(fp);
return 1;
}
- 关闭文件
使用fclose
函数关闭文件,释放资源:
fclose(fp);
读取二进制文件
- 打开文件
使用fopen
函数以二进制读取模式("rb"
)打开文件。例如:
FILE *fp;
fp = fopen("binary_file.bin", "rb");
if (fp == NULL) {
perror("无法打开文件");
return 1;
}
- 准备存储读取数据的变量或结构体
例如,对于上面写入的结构体数据,定义一个相同类型的结构体来接收读取的数据:
Data data_read;
- 使用
fread
函数读取数据
fread
函数的原型为size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
,参数含义与fwrite
类似。
对于结构体数据的读取示例如下:
size_t elements_read = fread(&data_read, sizeof(Data), 1, fp);
if (elements_read!= 1) {
if (feof(fp)) {
printf("已到达文件末尾。\n");
} else {
perror("读取数据时出错");
}
fclose(fp);
return 1;
}
- 关闭文件
使用fclose
函数关闭文件:
fclose(fp);
这样就完成了对二进制文件的读写操作。在实际应用中,可以根据需要多次调用fwrite
或fread
来处理大量数据,并且要注意对文件打开失败、读写错误等情况的处理。
原文地址:https://blog.csdn.net/huanghm88/article/details/143360970
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!