Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct account
{
char company_name[256];
int invoice_number;
int invoice_date;
float invoice_amount;
};
int main()
{
char *end;
char buf[256];
char y;
char n;
char a;
FILE *newacct;
struct account ledger;
newacct = fopen("robco.txt", "a");
printf("Enter Account Name:");
fgets(ledger.company_name, sizeof(ledger.company_name), stdin);
ledger.company_name[strlen(ledger.company_name)-1] = '\0';
printf("Enter Incoive Number:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_number = strtol(buf, &end, 10);
printf("Enter Invoice Date:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_date = strtol(buf, &end, 10);
printf("Enter Invoice Amount:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_amount = strtol(buf, &end, 10);
fprintf(newacct,"%s %d %d %f\n", ledger.company_name, ledger.invoice_number, ledger.invoice_date, ledger.invoice_amount);
fclose(newacct);
printf("Would you like to enter more data?:");
scanf("%s", &a);
switch (a){
case'n':
printf("Thanks for your entry!"); //should terminate
fprintf(newacct,"\n%s %d %d %f", ledger.company_name, ledger.invoice_number, ledger.invoice_date, ledger.invoice_amount);
fclose(newacct);
return 0;
case'y':
FILE *newacct;
struct account ledger;
newacct = fopen("robco.txt", "a");
printf("Enter Account Name:"); //the line that keeps skipping in every switch case.
fgets(ledger.company_name, sizeof(ledger.company_name), stdin); //it prints however it skips this input line.
ledger.company_name[strlen(ledger.company_name)-1] = '\0';
printf("\nEnter Incoive Number:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_number = strtol(buf, &end, 10);
printf("Enter Invoice Date:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_date = strtol(buf, &end, 10);
printf("Enter Invoice Amount:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_amount = strtol(buf, &end, 10);
fprintf(newacct,"%s %d %d %f\n", ledger.company_name, ledger.invoice_number, ledger.invoice_date, ledger.invoice_amount);
fclose(newacct);
break;
}
printf("Would you like to enter more data?:");
scanf("%s", &a);
switch (a){
case'n':
printf("Thanks for your entry!"); //should terminate
fprintf(newacct,"\n%s %d %d %f", ledger.company_name, ledger.invoice_number, ledger.invoice_date, ledger.invoice_amount);
fclose(newacct);
return 0;
case'y':
FILE *newacct;
struct account ledger;
newacct = fopen("robco.txt", "a");
printf("Enter Account Name:");
fgets(ledger.company_name, sizeof(&ledger.company_name), stdin);
ledger.company_name[strlen(ledger.company_name)-1] = '\0';
printf("Enter Incoive Number:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_number = strtol(buf, &end, 10);
printf("Enter Invoice Date:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_date = strtol(buf, &end, 10);
printf("Enter Invoice Amount:");
fgets(buf, sizeof(buf), stdin);
ledger.invoice_amount = strtol(buf, &end, 10);
fprintf(newacct,"%s %d %d %f\n", ledger.company_name, ledger.invoice_number, ledger.invoice_date, ledger.invoice_amount);
fclose(newacct);
break;
}
}