Try as I might to solve this riddle, I think I'm losing my mind! Can anyone help understand why this program crashes when I run through the loop a 2nd time?
I can run through the interactive loop one time and have the values entered written to a file. However, when I attempt to pass through the a loop a 2nd time, the program chokes.
// C Libraries Used
#include <stdio.h>
#include <math.h>
#include <string.h>
// Constant definitions
const float OTPAYFACTOR = 1.5;
const float REGWORKWKHRS = 40;
FILE *payfile;                // report file (for output)
// Variable declerations
char deptname [21];
char firstname [10];
char lastname [10];
char fullname [47];
float hrsworked;
float hrwage;
float reghrsworked;
float othrsworked;
float otwage;
float grosswage;
int count;
char again;
// Function Prototypes
//**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~
// M A I N   F U N C T I O N
//**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~**~~
int main (void){
    payfile = fopen("c:\\class\\mod6\\ethan-pay.txt","w");     // Open disk file
    printf("Mountain Pacific Corporation\nDepartment Salary Program\n\n");
    printf("Please enter the name of the department: ");
    scanf("%s", deptname);
    count = 0;    // Initialize this "counting" variable to zero to start
    printf("%s", deptname);
    printf("\n");
do {
      printf("Enter employee #%d: ", count+1);
      scanf("%s %s", firstname, lastname);
      fscanf(payfile,"%s %s", firstname, lastname);
      strcpy(fullname, firstname);
      strcat(fullname, " ");
      strcat(fullname, lastname);
      printf("Enter the hourly wage of %s: ", fullname);
      scanf("%f", &hrwage);
      fscanf(payfile,"%f", &hrwage);
      printf("Enter total number of hours: ");
      scanf("%f", &hrsworked);
      fscanf(payfile,"%f", &hrsworked);
    if (hrsworked <= REGWORKWKHRS){     //
        reghrsworked = hrsworked;
        othrsworked = 0;
        otwage = hrwage * OTPAYFACTOR;
        grosswage = hrwage*reghrsworked;
    }
        else{
            reghrsworked = REGWORKWKHRS;
            othrsworked = hrsworked - REGWORKWKHRS;
            otwage = hrwage * OTPAYFACTOR;
            grosswage = (reghrsworked * hrwage) + (othrsworked * otwage);
        }
       fprintf(payfile,"%-22s%0.1f ($%0.2f) %6.1f ($%0.2f) $%-4.2f\n", fullname, reghrsworked, hrwage, othrsworked, otwage, grosswage);
       printf("\nThank you. Process another employee? ");
       scanf ("%s", &again);
       printf("\n");
       count++; // Increment the counting variable
} while (again == 'Y'|| again == 'y' || again != 'N' && again != 'n');
      printf("End of processing.\n");
    fclose(payfile);
return 0;
}
 
    