下面我将从以下几个方面详细地讲解“C语言 文件 I/O”的使用攻略:
- 文件输入/输出概念介绍
- 文件读取操作
- 文件写入操作
- 文件读写的应用示例
1. 文件输入/输出概念介绍
在程序中,有时候需要对外部文件进行读写操作,这就需要使用文件输入/输出(File I/O)操作了。文件输入/输出是指程序通过系统提供的文件操作函数(如fopen、fclose、fread、fwrite等)来对文件进行读、写操作。文件按照其类型可以分为文本文件和二进制文件。文本文件是由可见字符组成的文件,可以被人类读取和理解;而二进制文件由二进制数据组成,不可读。
在C语言中,可使用fopen函数打开文件,使用fclose函数关闭文件,使用fread和fwrite函数进行读写操作,其中文件类型指针FILE *指向具体的文件,fread和fwrite函数可以一次读写多个数据,读写的单位也可以是字节或者数据类型。
2. 文件读取操作
文件读取操作主要有以下步骤:
- 使用fopen函数打开要读取的文件,若文件不存在则会创建一个新文件。
- 使用fread函数将文件中的数据读入到内存中。
- 使用fclose函数关闭文件。
以下是一个读取文本文件的示例代码:
#include <stdio.h>
int main() {
FILE *fp;
char buffer[255];
fp = fopen("test.txt", "r");
while (fgets(buffer, 255, fp) != NULL) {
printf("%s", buffer);
}
fclose(fp);
return 0;
}
以上代码中的fgets函数用来读取文本文件的一行数据并存入buffer数组中,直到读完整个文本文件。
3. 文件写入操作
文件写入操作主要有以下步骤:
- 使用fopen函数打开要写入的文件,若文件不存在则会创建一个新文件。
- 使用fwrite函数将内存中的数据写入到文件中。
- 使用fclose函数关闭文件。
以下是一个写入二进制文件的示例代码:
#include <stdio.h>
int main() {
FILE *fp;
int data[5] = {10, 20, 30, 40, 50};
fp = fopen("test.bin", "wb");
fwrite(data, sizeof(int), 5, fp);
fclose(fp);
return 0;
}
以上代码中的fwrite函数将整型数组data中的5个数据写入到test.bin文件中。
4. 文件读写的应用示例
下面我们来看一个文件读写的应用示例,例如保存学生信息到文件中,接着读取文件并显示学生信息。
以下是代码示例:
#include <stdio.h>
#include <stdlib.h>
typedef struct student {
char name[20];
int age;
int score;
} Student;
int main(void) {
FILE *fp;
int i, num;
Student s;
Student *p;
printf("请输入学生数量:");
scanf("%d", &num);
p = (Student *) malloc(sizeof(Student) * num);
fp = fopen("student.dat", "wb");
for (i = 0; i < num; i++) {
printf("请输入第 %d 个学生的姓名,年龄和成绩:", i + 1);
scanf("%s %d %d", p[i].name, &p[i].age, &p[i].score);
fwrite(&p[i], sizeof(Student), 1, fp);
}
fclose(fp);
free(p);
printf("学生信息保存成功!\n");
fp = fopen("student.dat", "rb");
while (fread(&s, sizeof(Student), 1, fp) == 1) {
printf("姓名:%s,年龄:%d,成绩:%d\n", s.name, s.age, s.score);
}
fclose(fp);
return 0;
}
以上代码中,使用结构体Student表示学生信息,使用指针数组p存储学生信息。用户输入学生数量num后,为p中的每个元素逐个输入姓名、年龄和成绩并存储到文件中,最后通过fread函数从文件中读取学生信息并输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言 文件 I/O - Python技术站