前言
文件操作是C语言编程中非常重要的一部分,它涉及到数据的持久化存储和程序的长期运行。掌握C语言的文件操作,可以帮助开发者创建、读取、写入和修改文件,这对于编写各种应用软件至关重要。本文将深入探讨C语言中的文件操作,包括入门技巧和实战解析。
文件操作基础
1. 文件的概念
在C语言中,文件是一种数据存储方式,它可以存储程序代码、数据或其他信息。文件通常存储在外部介质上,如硬盘、CD、U盘等。
2. 文件类型
- 程序文件:存储程序的代码,如
.c
文件。 - 数据文件:存储数据,如
.txt
文件。 - 二进制文件:存储二进制数据,如
.bin
文件。
3. 文件名
文件名是识别文件的唯一标识符,它由字母、数字、下划线和某些特殊字符组成。
文件操作函数
1. 打开文件
FILE *fopen(const char *path, const char *mode);
fopen
函数用于打开一个文件,并返回一个指向该文件的指针。path
是文件的路径,mode
指定了打开文件的方式。
2. 关闭文件
int fclose(FILE *stream);
fclose
函数用于关闭一个已经打开的文件,并释放与之相关的资源。
3. 读取文件
int fgetc(FILE *stream);
int fgets(char *str, int n, FILE *stream);
fgetc
函数用于读取文件中的单个字符,fgets
函数用于读取文件中的一行数据。
4. 写入文件
int fputc(int c, FILE *stream);
int fputs(const char *str, FILE *stream);
fputc
函数用于向文件中写入单个字符,fputs
函数用于向文件中写入一个字符串。
文件顺序读写
1. fputc
和fgetc
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "w+");
char ch;
// 写入字符
while ((ch = getchar()) != EOF) {
fputc(ch, fp);
}
// 定位到文件开头
rewind(fp);
// 读取字符
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
fclose(fp);
return 0;
}
2. fputs
和fgets
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "w+");
char str[100];
// 写入字符串
while (fgets(str, sizeof(str), stdin) != NULL) {
fputs(str, fp);
}
// 定位到文件开头
rewind(fp);
// 读取字符串
while (fgets(str, sizeof(str), fp) != NULL) {
printf("%s", str);
}
fclose(fp);
return 0;
}
文件随机读写
1. fseek
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "r+");
char ch;
// 定位到文件末尾
fseek(fp, -1, SEEK_END);
// 读取字符
ch = fgetc(fp);
// 定位到文件开头
rewind(fp);
// 输出文件内容
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
fclose(fp);
return 0;
}
2. ftell
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "w+");
char ch;
// 写入字符
while ((ch = getchar()) != EOF) {
fputc(ch, fp);
}
// 获取文件长度
long len = ftell(fp);
fclose(fp);
// 打开文件进行读取
fp = fopen("example.txt", "r");
fseek(fp, len - 1, SEEK_SET);
// 输出文件末尾内容
ch = fgetc(fp);
putchar(ch);
fclose(fp);
return 0;
}
总结
通过本文的学习,相信你已经对C语言中的文件操作有了深入的了解。掌握文件操作对于C语言开发者来说至关重要,它可以帮助你更好地管理数据,实现程序的持久化存储。希望本文能帮助你轻松操控文件操作,为你的编程之路添砖加瓦。