fprintf用C覆盖其他数据

use*_*012 1 c file-io printf file-management

我正在尝试将struct employee写入文件,但无论我输入case语句多少次,它都只会写入最近输入的一个.

    case '1':
    {
        fptr=fopen("program.bin","wb");

        if(fptr==NULL)
        {
            printf("Error!");
            exit(1);
        }

        printf("\nA is: %d\n",a);

        printf("\nPlease enter the employee's ID: ");
        scanf("%s",&employee[a].ID);
        fprintf(fptr,"Employees ID number:     %s\r\n",employee[a].ID);

        printf("\nPlease enter the employee's first name: ");
        scanf("%s",&employee[a].firstname);
        fprintf(fptr,"Employees first name:    %s\r\n",employee[a].firstname);

        printf("\nPlease enter the employee's Surname: ");
        scanf("%s",&employee[a].surname);
        fprintf(fptr,"Employees surname:       %s\r\n",employee[a].surname);

        printf("\nPlease enter the employee's Home address: ");
        scanf("%s",&employee[a].address);
        fprintf(fptr,"Employees address is:    %s\r\n",employee[a].address);

        printf("\nPlease enter the employee's department number: ");
        scanf("%s",&employee[a].department);
        fprintf(fptr,"Employees department is: %s\r\n",employee[a].department);

        printf("\nPlease enter the employee's duration: ");
        scanf("%s",&employee[a].duration);
        fprintf(fptr,"Employees duration is:   %s\r\n",employee[a].duration);

        a++;

        fclose(fptr);

        goto CASE; 
     }
Run Code Online (Sandbox Code Playgroud)

Don*_*ild 5

append模式打开文件而不是write模式.

fptr=fopen("program.bin","wb");

此语句program.binbinary write模式打开文件.此模式表示每次打开文件时,文件的初始内容都将被截断.

你应该使用:

fptr=fopen("program.bin","ab");append模式打开文件.

有关详细信息,请访问此链接