(文章目录)
前言
这篇文章我们来讲解C语言中的文件操作,文件操作在C语言中算是一个比较重要的知识点,我们每天都在和文件打交道,各种文件夹的打开和关闭操作,那么这篇文件带大家学习如何使用C语言中的文件操作来完成这个工作。
一、文件操作基本介绍
C语言提供了一组函数,可以用于进行文件操作。这些函数包括打开文件、关闭文件、读取文件内容和写入文件内容等。下面是对C语言中文件操作的几个常用函数的介绍和使用方法:
打开文件:
函数原型:FILE *fopen(const char *filename, const char *mode);
描述:用于打开指定文件并返回一个指向该文件的指针。
参数:
filename:要打开的文件的名称(包含路径),可以是相对路径或绝对路径。 mode:打开文件的模式,包括 “r”(只读)、“w”(写入)、 “a”(追加)等等。 返回值:如果成功,返回一个指向文件的指针;如果失败,返回空指针(NULL)。
关闭文件:
函数原型:int fclose(FILE *stream);
描述:用于关闭一个已打开的文件。
参数:stream 是指向 FILE 结构的指针,它表示要关闭的文件。
返回值:如果成功,返回 0;如果失败,返回 EOF(-1)。
读取文件内容:
函数原型:size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
描述:从文件中读取数据到指定的内存区域。
参数:
ptr:指向要读取数据存储位置的指针。 size:每个数据项的大小(以字节为单位)。 count:要读取的数据项的个数。 stream:指向 FILE 结构的指针,表示要读取的文件。 返回值:返回已成功读取的数据项个数。
写入文件内容:
函数原型:size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
描述:将指定内存区域的数据写入文件。
参数:
ptr:指向要写入数据的内存区域的指针。 size:每个数据项的大小(以字节为单位)。 count:要写入的数据项的个数。 stream:指向 FILE 结构的指针,表示要写入的文件。 返回值:返回已成功写入的数据项个数。 其他常用的文件操作函数:
fseek:在文件中定位到指定的位置。 ftell:获取文件指针的当前位置。 feof:检测文件流是否已到达文件末尾。 这些函数提供了基本的文件操作功能,你可以根据具体的需求使用它们来读取和写入文件。请记得在使用完文件后,要调用 fclose 函数来关闭文件,以释放系统资源。
二、编程练习
在VS中这些操作函数都变为了带有_s的函数了,那么我们就在VS的环境下来练习一下文件操作吧。
当使用带 _s 结尾的函数时,需要注意该系列函数在 C11 标准中引入,旨在提供更安全的编程环境。以下是使用一些带有 _s 的文件操作函数的示例:
1. 使用 fopen_s 打开文件:
#include <stdio.h>
int main() {
FILE* file = NULL;
errno_t err = 0;
err = fopen_s(&file, "example.txt", "r");
if (err != 0) {
printf("无法打开文件。\n");
return 1;
}
// 文件操作...
fclose(file);
return 0;
}
2. 使用 fwrite_s 写入文件:
#include <stdio.h>
int main() {
FILE* file = NULL;
errno_t err = 0;
err = fopen_s(&file, "example.txt", "w");
if (err != 0) {
printf("无法打开文件。\n");
return 1;
}
const char* content = "Hello, World!";
size_t size = strlen(content);
err = fwrite_s(content, size, sizeof(char), size, file);
if (err != 0) {
printf("写入文件时发生错误。\n");
}
fclose(file);
return 0;
}
3. 使用 fgets_s 读取一行文本:
#include <stdio.h>
int main() {
FILE* file = NULL;
errno_t err = 0;
err = fopen_s(&file, "example.txt", "r");
if (err != 0) {
printf("无法打开文件。\n");
return 1;
}
char buffer[100];
char* result = fgets(buffer, sizeof(buffer), file);
if (result != NULL) {
printf("读取到的内容:%s\n", buffer);
} else {
printf("读取文件时发生错误。\n");
}
fclose(file);
return 0;
}
4. 使用 fwrite_s 写入二进制数据:
#include <stdio.h>
int main() {
FILE* file = NULL;
errno_t err = 0;
err = fopen_s(&file, "example.bin", "wb");
if (err != 0) {
printf("无法打开文件。\n");
return 1;
}
int data[] = { 1, 2, 3, 4, 5 };
size_t size = sizeof(data);
size_t count = sizeof(data) / sizeof(int);
err = fwrite_s(data, size, count, file);
if (err != 0) {
printf("写入文件时发生错误。\n");
}
fclose(file);
return 0;
}
5. 使用 fread_s 读取二进制数据:
#include <stdio.h>
int main() {
FILE* file = NULL;
errno_t err = 0;
err = fopen_s(&file, "example.bin", "rb");
if (err != 0) {
printf("无法打开文件。\n");
return 1;
}
int data[5];
size_t size = sizeof(data[0]);
size_t count = sizeof(data) / size;
err = fread_s(data, sizeof(data), size, count, file);
if (err != 0) {
printf("读取文件时发生错误。\n");
}
fclose(file);
// 打印读取到的数据
for (int i = 0; i < 5; i++) {
printf("%d ", data[i]);
}
printf("\n");
return 0;
}
在这个示例中,我们使用 fread_s 函数从文件中读取二进制数据,并将数据存储到整型数组 data 中。size 参数指定了每个数据项的大小,count 参数指定了要读取的数据项数量。
这些示例展示了如何使用 _s 后缀的文件读写函数来进行二进制数据的读写操作。请根据你的具体需求进行相应的修改和适应。记得在使用完文件后,要使用 fclose 函数关闭文件以释放资源。
总结
本篇文章就讲解到这里希望大家可以学会C语言中的文件编程。
标签:文件,FILE,err,教学,file,printf,C语言,size From: https://blog.51cto.com/u_16153875/6505325