File does not open in C -


file not show when enter want doesn't give me error.

the file is:

account name    balance 100 jones   24.98 200 doe     345.67 300 white   0.00 400 stone   -42.16 500 rich    224.62 
int main(void) {     int account;     char name[30];     float balance;     int request;     char singleline[150];     file * fpointer;       fpointer = fopen("acc.txt","r");     while (!feof(fpointer))     {         fgets(singleline, 150, fpointer);     }     if ((fpointer= fopen("acc.txt", "r"))==null)         printf("file not opened\n");     else     {         printf("enter request\n"                "1 - list accounts 0 balances\n"                "2 - list accounts credit balances\n"                "3 -  list accounts debit balances\n"                "4 - endof run\n");         scanf("%d", &request);         while (request !=4)         {             fscanf(fpointer,"%d%s%f", &account,name, &balance);             switch(request)             {             case 1:                 printf("\naccounts 0 balnces:\n");                 while(!feof(fpointer))                 {                     if (balance ==0)                         printf("%-10d%-13s%7.2f\n", account, name, balance);                     fscanf(fpointer,"%d%s%f", &account,name, &balance);                 }                 break;             case 2:                 printf("\naccounts credit balances:\n");                 while(!feof(fpointer))                 {                     if (balance<0)                         printf("%-10d%-13s%7.2f\n", account, name, balance);                     fscanf(fpointer,"%d%s%f", &account,name, &balance);                 }                 break;             case 3:                 printf("\naccounts debit balances:\n");                 while(!feof(fpointer))                 {                     if (balance>0)                         printf("%-10d%-13s%7.2f\n", account, name, balance);                     fscanf(fpointer,"%d%s%f", &account,name, &balance);                 }                 break;             }             rewind (fpointer);             printf("\n?" );             scanf("%d",&request);         }         printf("end of run.\n");     }     fclose(fpointer);     system("pause >nul");     return 0; } 

your code has lot of problems, important are

  1. you fopen() file doing nothing , don't fclose() it, , think on ms windows computer cannot fopen() again, do.

  2. you check if file didn't open second time, not first time, it's if didn't check @ all, moreover, proceed fclose() file after check has told did not open.

  3. while (!feof(file)) wrong., should change condition while loop.

notice repeating code in every switch case, should consider using function, code problem fixed

#include <stdio.h>  int main(void) {     int   account;     char  name[30];     float balance;     int   request;     file *fpointer;       if ((fpointer = fopen("acc.txt", "r")) == null)         printf("file not opened\n");     else     {         int  chr;         char line[100];         printf("enter request\n"                "1 - list accounts 0 balances\n"                "2 - list accounts credit balances\n"                "3 -  list accounts debit balances\n"                "4 - endof run\n");         scanf("%d", &request);                while ((request != 4) && (fgets(line, sizeof(line), fpointer) != null))         {             switch(request)             {             case 1:                 printf("\naccounts 0 balnces:\n");                 while(fscanf(fpointer,"%d%s%f", &account, name, &balance) == 3)                 {                     if (balance == 0)                         printf("%-10d%-13s%7.2f\n", account, name, balance);                 }                 break;             case 2:                 printf("\naccounts credit balances:\n");                 while(fscanf(fpointer,"%d%s%f", &account, name, &balance) == 3)                 {                     if (balance < 0)                         printf("%-10d%-13s%7.2f\n", account, name, balance);                 }                 break;             case 3:                 printf("\naccounts debit balances:\n");                 while(fscanf(fpointer,"%d%s%f", &account, name, &balance) == 3)                 {                     if (balance > 0)                         printf("%-10d%-13s%7.2f\n", account, name, balance);                 }                 break;             }             rewind (fpointer);             printf ("\n?" );              while (((chr = getchar()) != eof) && (chr != '\n'));             scanf("%d", &request);         }         printf("end of run.\n");         fclose (fpointer);     }      return 0; } 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -