当前位置:首页 > 行业动态 > 正文

c语言如何读写文件

在C语言中,读写文件是一个重要的操作,通过读写文件,我们可以将数据存储到磁盘上,以便在程序运行过程中或程序结束后进行访问,我们还可以读取文件中的数据,对其进行处理和分析,本文将详细介绍如何在C语言中进行文件的读写操作。

文件的基本概念

1、文件:文件是计算机中存储数据的载体,可以是文本文件、二进制文件等,在C语言中,文件是以流的形式进行操作的。

2、文件指针:文件指针是一个变量,用于存放指向文件的地址,通过文件指针,我们可以对文件进行各种操作。

3、文件类型指针:文件类型指针是一个特殊的指针,用于指向文件类型的数据结构,通过文件类型指针,我们可以更方便地对文件进行操作。

文件的打开与关闭

在进行文件读写操作之前,我们需要先打开一个文件,打开文件的过程称为“创建文件流”,关闭文件的过程称为“关闭文件流”。

1、打开文件:在C语言中,我们使用fopen函数来打开一个文件,fopen函数的原型如下:

FILE *fopen(const char *filename, const char *mode);

filename表示要打开的文件名,mode表示打开文件的模式,常见的模式有以下几种:

"r": 以只读方式打开文件,如果文件不存在则创建一个新文件。

"w": 以写入方式打开文件,如果文件不存在则创建一个新文件,如果文件存在则清空原内容。

"a": 以追加方式打开文件,如果文件不存在则创建一个新文件,如果文件存在则在原内容后追加新内容。

"r+": 以读写方式打开文件,如果文件不存在则创建一个新文件。

"w+": 以读写方式打开文件,如果文件不存在则创建一个新文件,如果文件存在则清空原内容。

"a+": 以读写方式打开文件,如果文件不存在则创建一个新文件,如果文件存在则在原内容后追加新内容。

2、关闭文件:在完成对文件的操作后,我们需要关闭文件,关闭文件的过程可以使用fclose函数来实现,fclose函数的原型如下:

int fclose(FILE *stream);

stream表示要关闭的文件流,fclose函数会释放与该流相关的资源,并返回一个整数值表示操作结果,如果操作成功,返回0;否则返回非0值。

文件的读写操作

在打开文件之后,我们就可以进行读写操作了,在C语言中,我们使用fgetc、fputc、fread、fwrite等函数来进行读写操作。

1、字符读写:使用fgetc函数从文件中读取一个字符,使用fputc函数向文件中写入一个字符,这两个函数的原型如下:

int fgetc(FILE *stream);
int fputc(int c, FILE *stream);

stream表示要操作的文件流,c表示要写入的字符,fgetc函数会返回从文件中读取到的字符,如果到达文件末尾则返回EOF(End Of File),fputc函数会将字符c写入到文件中,并返回写入的字符,如果写入失败则返回EOF。

2、字符串读写:使用fgets函数从文件中读取一行字符串,使用fputs函数向文件中写入一行字符串,这两个函数的原型如下:

char *fgets(char *str, int n, FILE *stream);
int fputs(const char *str, FILE *stream);

str表示要存储读取到的字符串的缓冲区,n表示缓冲区的大小,stream表示要操作的文件流,fgets函数会返回读取到的字符串的第一个字符的地址,如果到达文件末尾则返回NULL,fputs函数会将字符串str写入到文件中,并返回写入的字符数,如果写入失败则返回EOF。

3、数据块读写:使用fread函数从文件中读取一块数据,使用fwrite函数向文件中写入一块数据,这两个函数的原型如下:

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

ptr表示要存储读取到的数据的缓冲区的首地址,size表示每个数据的大小,count表示要读取或写入的数据块的数量,stream表示要操作的文件流,fread函数会返回实际读取到的数据块的数量,如果到达文件末尾则返回0,fwrite函数会返回实际写入的数据块的数量,如果写入失败则返回0。

实例演示

下面通过一个简单的实例来演示如何在C语言中进行文件的读写操作,在这个实例中,我们将从一个文本文件中读取内容,并将其中的大写字母转换为小写字母后输出到另一个文本文件中。

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int main() {
    FILE *input_file, *output_file;
    char input_buffer[1024], output_buffer[1024];
    char oldPath[] = "input.txt"; // 输入文件路径
    char newPath[] = "output.txt"; // 输出文件路径
    int read_count;
    size_t write_count;
    int i;
    char ch;
    input_file = fopen(oldPath, "r"); // 打开输入文件
    if (input_file == NULL) { // 如果打开失败,输出错误信息并退出程序
        printf("Error: Unable to open input file!
");
        exit(1);
    } else { // 如果打开成功,输出提示信息并继续执行后续操作
        printf("Successfully opened input file!
");
    }
0