关于#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


谁知道这是什么原因?


#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;
}