自学内容网 自学内容网

C 语言中文件读写操作的基本代码示例

以下是 C 语言中文件读写操作的基本代码示例:

1. 写入文件(使用fprintf函数)

#include <stdio.h>

int main() {
    FILE *fp;
    fp = fopen("test.txt", "w");  // 以写入模式打开文件,如果文件不存在则创建,如果存在则清空内容

    if (fp!= NULL) {
        fprintf(fp, "这是写入文件的示例。\n");
        fprintf(fp, "这里是更多的内容。\n");
        fclose(fp);  // 关闭文件
        printf("数据已成功写入文件。\n");
    } else {
        perror("打开文件时出错");
        return 1;
    }
    return 0;
}

2. 读取文件(使用fscanf函数)

#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[100];

    fp = fopen("test.txt", "r");  // 以只读模式打开文件

    if (fp!= NULL) {
        while (fscanf(fp, "%s", buffer)!= EOF) {  // 逐词读取直到文件末尾
            printf("%s ", buffer);
        }
        fclose(fp);
    } else {
        perror("打开文件时出错");
        return 1;
    }
    return 0;
}

3. 使用fgetsfputs进行文件读写

写入文件
#include <stdio.h>

int main() {
    FILE *fp;
    char lines[3][50] = {"第一行内容\n", "第二行内容\n", "第三行内容\n"};

    fp = fopen("another_test.txt", "w");
    if (fp!= NULL) {
        for (int i = 0; i < 3; i++) {
            fputs(lines[i], fp);
        }
        fclose(fp);
        printf("数据已成功写入文件。\n");
    } else {
        perror("打开文件时出错");
        return 1;
    }
    return 0;
}
读取文件
#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[100];

    fp = fopen("another_test.txt", "r");
    if (fp!= NULL) {
        while (fgets(buffer, sizeof(buffer), fp)!= NULL) {  // 逐行读取直到文件末尾
            printf("%s", buffer);
        }
        fclose(fp);
    } else {
        perror("打开文件时出错");
        return 1;
    }
    return 0;
}

4. 以二进制模式读写文件(使用freadfwrite

写入结构体数据到二进制文件
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int id;
    char name[20];
} Student;

int main() {
    FILE *fp;
    Student s1 = {1, "张三"};
    Student s2 = {2, "李四"};

    fp = fopen("students.bin", "wb");  // 以二进制写入模式打开文件
    if (fp!= NULL) {
        fwrite(&s1, sizeof(Student), 1, fp);
        fwrite(&s2, sizeof(Student), 1, fp);
        fclose(fp);
        printf("结构体数据已成功写入二进制文件。\n");
    } else {
        perror("打开文件时出错");
        return 1;
    }
    return 0;
}
从二进制文件读取结构体数据
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int id;
    char name[20];
} Student;

int main() {
    FILE *fp;
    Student s;

    fp = fopen("students.bin", "rb");  // 以二进制读取模式打开文件
    if (fp!= NULL) {
        while (fread(&s, sizeof(Student), 1, fp) == 1) {
            printf("ID: %d, Name: %s\n", s.id, s.name);
        }
        fclose(fp);
    } else {
        perror("打开文件时出错");
        return 1;
    }
    return 0;
}

这些示例涵盖了 C 语言中几种常见的文件读写方式,可以根据实际需求选择合适的方法。在实际应用中,还需要对文件操作的错误情况进行更详细的处理和分析。

在 C 语言中,可以使用freadfwrite函数来实现对二进制文件的读写操作,以下是详细步骤:

写入二进制文件

  1. 打开文件
    使用fopen函数以二进制写入模式("wb")打开文件。例如:
FILE *fp;
fp = fopen("binary_file.bin", "wb");
if (fp == NULL) {
    perror("无法打开文件");
    return 1;
}
  1. 准备要写入的数据
    可以是基本数据类型(如intfloatchar等),也可以是结构体等自定义数据类型。例如,定义一个结构体:
typedef struct {
    int id;
    float value;
} Data;

Data data_to_write = {1, 3.14};
  1. 使用fwrite函数写入数据
    fwrite函数的原型为size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);,其中:
    • ptr是指向要写入数据的指针。
    • size是每个数据元素的大小(以字节为单位)。
    • count是要写入的数据元素的数量。
    • stream是指向文件流的指针。

对于上述结构体数据的写入示例如下:

size_t elements_written = fwrite(&data_to_write, sizeof(Data), 1, fp);
if (elements_written!= 1) {
    perror("写入数据时出错");
    fclose(fp);
    return 1;
}
  1. 关闭文件
    使用fclose函数关闭文件,释放资源:
fclose(fp);

读取二进制文件

  1. 打开文件
    使用fopen函数以二进制读取模式("rb")打开文件。例如:
FILE *fp;
fp = fopen("binary_file.bin", "rb");
if (fp == NULL) {
    perror("无法打开文件");
    return 1;
}
  1. 准备存储读取数据的变量或结构体
    例如,对于上面写入的结构体数据,定义一个相同类型的结构体来接收读取的数据:
Data data_read;
  1. 使用fread函数读取数据
    fread函数的原型为size_t fread(void *ptr, size_t size, size_t count, FILE *stream);,参数含义与fwrite类似。

对于结构体数据的读取示例如下:

size_t elements_read = fread(&data_read, sizeof(Data), 1, fp);
if (elements_read!= 1) {
    if (feof(fp)) {
        printf("已到达文件末尾。\n");
    } else {
        perror("读取数据时出错");
    }
    fclose(fp);
    return 1;
}
  1. 关闭文件
    使用fclose函数关闭文件:
fclose(fp);

这样就完成了对二进制文件的读写操作。在实际应用中,可以根据需要多次调用fwritefread来处理大量数据,并且要注意对文件打开失败、读写错误等情况的处理。


原文地址:https://blog.csdn.net/huanghm88/article/details/143360970

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!