1. 文件类型
C语言中的文件类型只有两种,分别是文本文件和二进制文件。
1.1 文本文件
文本文件是由一些文本字符组成,每个字符均为一个字节,可以使用文本编辑器来查看和编辑。常见的文本文件类型有txt、c、h等,都是由文本字符组成的文件。
文本文件的特点:
可以使用文本编辑器查看和编辑
只包含文本字符,不包含二进制数据
每个字符占用一个字节的存储空间
示例:
#include <stdio.h>
int main(){
FILE *file;
char str[100];
file = fopen("example.txt", "r");
if(file == NULL){
printf("File not found\n");
return 0;
}
fgets(str, 100, file);
printf("%s", str);
fclose(file);
return 0;
}
代码中使用fopen函数打开文本文件,在读取文件内容时使用了fgets函数。
1.2 二进制文件
二进制文件是由一些二进制数据组成,可以包含文本字符和非文本字符。与文本文件不同,二进制文件不能使用文本编辑器来查看和编辑,需要使用专门的二进制编辑器。常见的二进制文件类型有jpg、mp3、exe等。
二进制文件的特点:
不能使用文本编辑器查看和编辑
包含文本字符和非文本字符
每个字符的存储空间大小不固定,取决于数据类型
示例:
#include <stdio.h>
int main(){
FILE *file;
int number = 10;
file = fopen("example.bin", "wb");
if(file == NULL){
printf("File not found\n");
return 0;
}
fwrite(&number, sizeof(int), 1, file);
fclose(file);
return 0;
}
代码中使用fopen函数创建二进制文件,在写入数据时使用了fwrite函数。
2. 文件操作
在C语言中,可以使用一系列的函数来对文件进行操作。这些文件操作函数大致可以分为以下几类:
2.1 文件打开和关闭
打开文件需要使用fopen函数,关闭文件需要使用fclose函数。
fopen函数的语法:
FILE *fopen(const char *filename, const char *mode);
fclose函数的语法:
int fclose(FILE *stream);
示例:
#include <stdio.h>
int main(){
FILE *file;
file = fopen("example.txt", "r");
if(file == NULL){
printf("File not found\n");
return 0;
}
fclose(file);
return 0;
}
代码中使用fopen函数打开文本文件,在程序结束时使用fclose函数关闭文件。
2.2 文件读写
读取文本文件需要使用fgets函数,读取二进制文件需要使用fread函数。写入文本文件需要使用fprintf函数,写入二进制文件需要使用fwrite函数。
fgets函数的语法:
char *fgets(char *str, int n, FILE *stream);
fread函数的语法:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
fprintf函数的语法:
int fprintf(FILE *stream, const char *format, ...);
fwrite函数的语法:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
示例:
#include <stdio.h>
int main(){
FILE *file;
char str[100];
// 读取文本文件
file = fopen("example.txt", "r");
if(file == NULL){
printf("File not found\n");
return 0;
}
fgets(str, 100, file);
printf("%s", str);
fclose(file);
// 写入文本文件
file = fopen("example.txt", "a");
if(file == NULL){
printf("File not found\n");
return 0;
}
fprintf(file, "Hello, world!");
fclose(file);
// 读取二进制文件
int number;
file = fopen("example.bin", "rb");
if(file == NULL){
printf("File not found\n");
return 0;
}
fread(&number, sizeof(int), 1, file);
printf("%d", number);
fclose(file);
// 写入二进制文件
number = 20;
file = fopen("example.bin", "wb");
if(file == NULL){
printf("File not found\n");
return 0;
}
fwrite(&number, sizeof(int), 1, file);
fclose(file);
return 0;
}
代码中演示了如何使用fgets、fread、fprintf和fwrite函数进行文件读写操作。
2.3 文件定位
在读写文件时,我们可能需要改变文件指针的位置。ftell函数可以获取文件指针的位置,fseek函数可以改变文件指针的位置。
ftell函数的语法:
long int ftell(FILE *stream);
fseek函数的语法:
int fseek(FILE *stream, long int offset, int whence);
示例:
#include <stdio.h>
int main(){
FILE *file;
char str[100];
// 读取文本文件
file = fopen("example.txt", "r");
if(file == NULL){
printf("File not found\n");
return 0;
}
fgets(str, 100, file);
printf("Current position: %ld\n", ftell(file));
fseek(file, 0, SEEK_SET);
printf("After seek: %ld\n", ftell(file));
fgets(str, 100, file);
printf("%s", str);
fclose(file);
return 0;
}
代码中演示了如何使用ftell和fseek函数来定位文件指针。
3. 总结
C语言中的文件类型只有两种,分别是文本文件和二进制文件。在进行文件操作时,可以使用一系列的文件操作函数,包括打开和关闭文件、读取和写入文件以及文件定位等。学会了文件操作,能够让我们更好地管理和处理文件,方便我们进行程序开发。