考上研究僧 2022-01-21 21: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 22: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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月30日
  • 已采纳回答 1月22日
  • 创建了问题 1月21日