哦咯咯哒 2023-10-31 13:12 采纳率: 86.4%
浏览 4
已结题

C语言程序设计文件,怎么追加到文本文件stud.txt


#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
struct student 
{
    char name[50]; 
    int id;
    float english_score;
    float physics_score;
    float c_score;
};
int main() 
{
    FILE *fp;
    int i;
    struct student s_data;
    fp = fopen("student.dat", "w");
    if (fp == NULL) {
        printf("File cannot be opened\n");
        exit(0);
    }
    for (i = 0; i < 3; i++) 
    {
        printf("请输入学生信息 %d (学号, 姓名, 英语成绩,物理成绩,C语言程序设计成绩): ", i + 1);
        scanf("%d %s %f %f %f", &s_data.id, s_data.name, &s_data.english_score, &s_data.physics_score, &s_data.c_score);
        fwrite(&s_data, sizeof(struct student), 1, fp);
    }
    fclose(fp);
    fp = fopen("student.dat", "r");
    if (fp == NULL) {
        printf("File cannot be opened\n");
        exit(0);
    }
    printf("学生信息:\n");
    while (fread(&s_data, sizeof(struct student), 1, fp) == 1) {
        printf("学号: %d, 姓名: %s, 英语成绩: %.1f, 物理成绩: %.f, C语言程序设计成绩: %.f\n", s_data.id, s_data.name, s_data.english_score, s_data.physics_score, s_data.c_score);
    }
    fclose(fp);
    return 0;
}

这个程序怎么追加到文本文件stud.txt

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-31 16:41
    关注

    【以下回答由 GPT 生成】

    在上述C语言程序中,我们主要通过"student.dat"二进制文件来保存学生信息。如果要将该信息追加到文本文件"stud.txt"中,我们可以进行以下步骤:

    1. 更改文件打开方式:在程序中更改fopen函数的第一个参数,将其改为"stud.txt"表示要打开的文本文件名,同时更改打开方式为"a",表示以追加模式打开文件。代码如下:

    c fp = fopen("stud.txt", "a");

    1. 更改写入函数:由于我们要写入文本文件,需要使用文本输出函数,所以需要将fwrite函数更改为fprintf函数。代码如下:

    c fprintf(fp, "学号: %d, 姓名: %s, 英语成绩: %.1f, 物理成绩: %.f, C语言程序设计成绩: %.f\n", s_data.id, s_data.name, s_data.english_score, s_data.physics_score, s_data.c_score);

    修改后的代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #pragma warning(disable:4996)
    
    struct student 
    {
        char name[50]; 
        int id;
        float english_score;
        float physics_score;
        float c_score;
    };
    
    int main() 
    {
        FILE *fp;
        int i;
        struct student s_data;
        fp = fopen("student.dat", "w");
        if (fp == NULL) {
            printf("File cannot be opened\n");
            exit(0);
        }
    
        for (i = 0; i < 3; i++) 
        {
            printf("请输入学生信息 %d (学号, 姓名, 英语成绩,物理成绩,C语言程序设计成绩): ", i + 1);
            scanf("%d %s %f %f %f", &s_data.id, s_data.name, &s_data.english_score, &s_data.physics_score, &s_data.c_score);
            fwrite(&s_data, sizeof(struct student), 1, fp);
        }
    
        fclose(fp);
    
        fp = fopen("stud.txt", "a");
        if (fp == NULL) {
            printf("File cannot be opened\n");
            exit(0);
        }
    
        printf("学生信息:\n");
        while (fread(&s_data, sizeof(struct student), 1, fp) == 1) {
            fprintf(fp, "学号: %d, 姓名: %s, 英语成绩: %.1f, 物理成绩: %.f, C语言程序设计成绩: %.f\n", s_data.id, s_data.name, s_data.english_score, s_data.physics_score, s_data.c_score);
        }
    
        fclose(fp);
        return 0;
    }
    


    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月2日
  • 已采纳回答 6月24日
  • 创建了问题 10月31日