一文详解C语言中文件相关函数的使用
文件的基本操作
fopen函数
FILE *fopen(const char *filename, const char *mode);
打开或创建文件。
- 参数
filename
表示文件名。 - 参数
mode
表示文件打开方式,有"r"
(只读)、"w"
(只写)、"a"
(追加)、"rb"
(二进制只读)、"wb"
(二进制只写)、"ab"
(二进制追加)等模式。
返回值是一个FILE
类型的指针,表示文件指针。
示例
FILE * fp;
fp = fopen("test.txt", "w");
以上代码打开(如果文件不存在,则创建)一个名为test.txt
的文件,并将文件指针赋值给指针变量fp
。
fclose函数
int fclose(FILE *stream);
关闭文件。
- 参数
stream
是指向文件指针的指针。
返回值为0表示关闭成功,-1表示关闭失败。
示例
FILE * fp;
fp = fopen("test.txt", "w");
fclose(fp);
以上代码打开(如果文件不存在,则创建)一个名为test.txt
的文件,并使用fclose
函数关闭该文件。
fread函数
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
读取文件内容。
- 参数
ptr
是指向要写入数据的指针。 - 参数
size
是每个数据项的字节数。 - 参数
count
是要读取的数据项数目。 - 参数
stream
是文件指针。
返回值是实际读取的数据项个数。
示例
FILE * fp;
char buffer[10];
fp = fopen("test.txt", "r+");
fread(buffer, sizeof(char), 10, fp);
fclose(fp);
以上代码打开一个叫做test.txt
的文件,读取前10个字符(如果文件不足10个字符,读取文件的剩余部分),并将其存储到字符数组buffer
中。
fwrite函数
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
向文件中写入内容。
- 参数
ptr
是指向要写入内容的指针。 - 参数
size
是每个数据项的字节数。 - 参数
count
是要写入的数据项数目。 - 参数
stream
是文件指针。
返回值是实际写入的数据项个数。
示例
FILE * fp;
char buffer[10] = "Hello";
fp = fopen("test.txt", "w");
fwrite(buffer, sizeof(char), 5, fp); // 只写入前五个字符
fclose(fp);
以上代码创建一个叫做test.txt
的文件,并将字符串"Hello"
中的前五个字符写入该文件中。
文件指针定位
fseek函数
int fseek(FILE *stream, long offset, int whence);
将文件指针移动到指定位置。
- 参数
stream
是文件指针。 - 参数
offset
是指针偏移量,指针将从当前位置移动offset
字节。 - 参数
whence
表示起始位置,有SEEK_SET
(文件开头)、SEEK_CUR
(当前位置)和SEEK_END
(文件结尾)三个选项。
返回值为0表示定位成功,-1表示定位失败。
示例
FILE * fp;
fp = fopen("test.txt", "r+");
fseek(fp, 3, SEEK_SET); // 将文件指针移动到文件开头的第4个字节
fclose(fp);
以上代码打开一个名为test.txt
的文件,将文件指针移动到文件开头的第4个字节。
ftell函数
long ftell(FILE *stream);
获取文件指针的位置。
- 参数
stream
是文件指针。
返回值为指针相对于文件开头的偏移量,以字节为单位。
示例
FILE * fp;
long position;
fp = fopen("test.txt", "r+");
position = ftell(fp); // 获取当前指针位置
fclose(fp);
以上代码打开一个名为test.txt
的文件,获取当前文件指针的位置。
文件属性获取
ferror函数
int ferror(FILE *stream);
检查文件读写过程中是否发生错误。
- 参数
stream
是文件指针。
返回值为非0表示发生错误,0表示未发生错误。
示例
FILE * fp;
fp = fopen("test.txt", "r+");
fread(buffer, sizeof(char), 10, fp);
if(ferror(fp)) // 检查是否出错
{
printf("An error occurred\n");
}
fclose(fp);
以上代码打开一个名为test.txt
的文件,读取前10个字符,并检查是否有错误发生。
feof函数
int feof(FILE *stream);
检查文件是否已经到达结尾。
- 参数
stream
是文件指针。
返回值为非0表示已经到达结尾,0表示未到达结尾。
示例
FILE * fp;
fp = fopen("test.txt", "r+");
while (!feof(fp)) // 循环读取文件,直到到达结尾
{
fread(buffer, sizeof(char), 1, fp);
}
fclose(fp);
以上代码打开一个名为test.txt
的文件,循环读取文件,直到到达文件结尾。
总结
以上是C语言中文件相关函数的使用攻略。要熟练掌握文件操作,需要多写代码进行实践,这样才能更好地理解和运用这些函数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文详解C语言中文件相关函数的使用 - Python技术站