考上研究僧 2022-01-21 13:15 采纳率: 97.4%
浏览 35
已结题

关于#C语言#的问题,如何解决?


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Employee
{
    char num[6];
    char name[10];
    char sex[2];
    int age;
    char addr[20];
    int salary;
    char health[8];
    char cla[10];
}em[10];
struct Emp
{
    char name[10];
    int salary;
}em_case[10];
int main()
{
    FILE* fp1, * fp2;
    errno_t err1, err2;
    int i, j = 0;
    if (err1 = fopen_s(&fp1, "employee", "r"))
    {
        printf("can not open file.\n");
        exit(0);
    }
    printf("\n NO. name sex age addr salary health class\n");
    for (i = 0; fread(&em[i], sizeof(struct Employee), 1, fp1) == 1; i++)
    {
        printf("%4s %8s %4s %6d %10s %6d %10s %8s\n", em[i].num, em[i].name, em[i].sex, em[i].age, em[i].addr, em[i].salary, em[i].health, em[i].cla);
        //strcpy_s(em_case[i].name,strlen(em[i].name)+1 ,em[i].name);
        while (em[i].name[j] != '\0')
        {
            em_case[i].name[j] = em[i].name[j];
            j++;
        }
        em_case[i].name[j] = '\0';
        em_case[i].salary = em[i].salary;
    }
    printf("\n\n********************************************");
    if (err2 = fopen_s(&fp2, "emp_salary", "w"))
    {
        printf("can not open file.\n");
        exit(0);
    }
    for (j = 0; j < i; j++)
    {
        if (fwrite(&em_case, sizeof(struct Emp), 1, fp2)!=1)
            printf("error.\n");
        printf("\n %12s %10d", em_case[i].name, em_case[i].salary);
    }
    printf("\n********************************************");
    fclose(fp1);
    fclose(fp2);
    return 0;
}

img


谁知道这是什么原因?

展开全部

  • 写回答

1条回答 默认 最新

  • 五一编程 2022-01-21 14:39
    关注
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct Employee
    {
        char num[6];
        char name[10];
        char sex[2];
        int age;
        char addr[20];
        int salary;
        char health[8];
        char cla[10];
    }em[10];
    struct Emp
    {
        char name[10];
        int salary;
    }em_case[10];
    int main()
    {
        FILE* fp1, * fp2;
        errno_t err1, err2;
        int i, j = 0;
        if (err1 = fopen_s(&fp1, "employee", "r"))
        {
            printf("can not open file.\n");
            exit(0);
        }
        printf("\n NO. name sex age addr salary health class\n");
        for (i = 0; fread(&em[i], sizeof(struct Employee), 1, fp1) == 1; i++)
        {
            printf("%4s %8s %4s %6d %10s %6d %10s %8s\n", em[i].num, em[i].name, em[i].sex, em[i].age, em[i].addr, em[i].salary, em[i].health, em[i].cla);
            //strcpy_s(em_case[i].name,strlen(em[i].name)+1 ,em[i].name);
            j = 0;
            while (em[i].name[j] != '\0')
            {
                em_case[i].name[j] = em[i].name[j];
                j++;
            }
            em_case[i].name[j] = '\0';
            em_case[i].salary = em[i].salary;
        }
        printf("\n\n********************************************");
        if (err2 = fopen_s(&fp2, "emp_salary", "w"))
        {
            printf("can not open file.\n");
            exit(0);
        }
        for (j = 0; j < i; j++)
        {
            if (fwrite(&em_case, sizeof(struct Emp), 1, fp2)!=1)
                printf("error.\n");
            printf("\n %12s %10d", em_case[j].name, em_case[j].salary);
        }
        printf("\n********************************************");
        fclose(fp1);
        fclose(fp2);
        return 0;
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    考上研究僧 2022-01-21 14:59

    奇怪,我直接把你的代码复制过去了运行结果还是全是0

    回复
    五一编程 回复 考上研究僧 2022-01-21 15:04

    employee和emp_salary方便提供么?

    回复
    考上研究僧 回复 五一编程 2022-01-21 15:52

    //建立employee文件的程序如下。
    #include<stdio.h>
    #include<stdlib.h>
    struct Employee
    {
        char num[6];
        char name[10];
        char sex[2];
        int age;
        char addr[20];
        int salary;
        char health[8];
        char cla[10];
    }em[10];
    int main()
    {
        FILE* fp;
        errno_t err;
        int i;
        printf("input NO.,name,sex,age,addr,salary,health,class\n");
        for (i = 0; i < 4; i++)
        {
            scanf_s("%s", em[i].num, 6);
            scanf_s("%s", em[i].name, 10);
            scanf_s("%s", em[i].sex, 2);
            scanf_s("%d", &em[i].age);
            scanf_s("%s", em[i].addr, 20);
            scanf_s("%d", &em[i].salary);
            scanf_s("%s", em[i].health, 8);
            scanf_s("%s", em[i].cla, 10);
        }
        if (err = fopen_s(&fp, "employee", "w"))
        {
            printf("can not open file!\n");
            exit(0);
        }
        for (i = 0; i < 4; i++)
        {
            if (fwrite(&em[i], sizeof(struct Employee), 1, fp) != 1)
                printf("error!\n");
        }
        fclose(fp);
        return 0;
    }
    

    回复
    展开全部8条评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月22日
  • 创建了问题 1月21日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部