因此,我最近掌握了结构,终于对数组感到满意,现在我必须处理我的教授希望我能够存储100万个结构(工资记录)的文件,而且我敢肯定,大数组会导致程序崩溃。因此,我对如何将结构备份到txt文件并在启动时将其上传回我的程序感到困惑。文字会乱七八糟吗?这是我程序的主要部分,我需要将其放入文件中。它基本上使用struct制作工资记录。所以我只是想知道有人能给我提示将其发送到文本文件中吗
void payRollAdd(PAYROLL employee[], long int *pCounter){
int userinput;
do{
printf("Enter Employee Name:\n");
fgets(employee[*pCounter].name, 40, stdin);
printf("Please Enter the paydate(mmddyyyy):\n");
scanf_s("%02d%02d%d", &employee[*pCounter].payDate.month, &employee[*pCounter].payDate.day, &employee[*pCounter].payDate.year);
printf("Enter Employee Age:\n");
scanf_s("%d", &employee[*pCounter].age);
printf("Enter Employee Hours Worked\n");
scanf_s("%f", &employee[*pCounter].hrsWorked);
printf("Enter Employee Hourly Wage:\n");
scanf_s("%f", &employee[*pCounter].hrlyWage);
printf(" Employee Data \n");
printf("Name: %s\n", employee[*pCounter].name);
printf("Age: %d\n", employee[*pCounter].age);
printf("Pay Date: %02d/%02d/%d:\n", employee[*pCounter].payDate.month, employee[*pCounter].payDate.day, employee[*pCounter].payDate.year);
printf("Hours Worked: %0.2f\n", employee[*pCounter].hrsWorked);
printf("Hourly Wage: $%0.2f\n", employee[*pCounter].hrlyWage);
if (employee[*pCounter].hrsWorked > 40.00){
float temp = 40.00;
employee[*pCounter].regPay = temp * employee[*pCounter].hrlyWage;
printf("Regular pay: $%0.2f\n", employee[*pCounter].regPay);
}
else
{
employee[*pCounter].regPay = employee[*pCounter].hrsWorked * employee[*pCounter].hrlyWage;
printf("Regular pay: $%0.2f\n", employee[*pCounter].regPay);
}
if (employee[*pCounter].hrsWorked > 40.00){
float temp2 = 0.00;
temp2 = employee[*pCounter].hrsWorked;
temp2 -= 40.00;
employee[*pCounter].otPay = temp2 * `(employee[*pCounter].hrlyWage + (employee[*pCounter].hrlyWage / 2.00));`
printf("OT pay: $%0.2f\n", employee[*pCounter].otPay);
}
else
{
employee[*pCounter].otPay = 0;
printf("OT pay: $0\n");
}
employee[*pCounter].totalPay = employee[*pCounter].regPay + employee[*pCounter].otPay;
printf("Total Pay: $%0.2f\n", employee[*pCounter].totalPay);
您可以结合使用fseek,fwrite和fread来读写文件并在文件中查找结构:
fseek(fp,0L,SEEK_END);
fwrite(&employee,sizeof(employee),1,fp);
您可以执行类似的操作来读取以下记录:
fseek(fp,sizeof(employee) * recno,SEEK_SET);
fread(&employee,sizeof(employee),1,fp);
检查返回码!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句