Link to home
Start Free TrialLog in
Avatar of wkellya
wkellya

asked on

File operations

I have a loop that determines whether to continue or quit based on user input when the continue option is executed the program starts over but it no longer waits for the user to input a filename. I goes straight to the error message as if the file==NULL when I printed out the value for the file name it was indeed equalled to NULL this only happens the second time the loop executes can any one tell me why this is happening?
Avatar of numansiddique
numansiddique

could you please post the code snippet where u r having tht problem
Avatar of wkellya

ASKER

heres the code:

printf("Enter the name and path of a .TXT file e.g. C:\\<filename>.txt:\n");
                  fflush(stdout);
                  fgets(fname, 128, stdin);
            
       if((s = strchr(fname,'\n')) != NULL) *s = '\0';/* remove newline char */
            
            fp=fopen(fname,"r");

            if(fp==NULL)
                  {
                  printf("Cannot open file.\n");/* Jumps right to here without waiting for input*/
                 return EXIT_FAILURE;
                        system("pause");
                  }
            else
Avatar of wkellya

ASKER

heres the loop condition:
      }/*end else*/
            printf("\n\n");
            printf("Enter Q to quit, C to continue >");
            scanf(" %c", &quit);

      }while ((quit != 'Q') && (quit != 'q'));  
  }while(1);/*Everything above is true*/
Hello wkellya
i would suggest you to do the following modifications.
declare quit as int

int quit;
int quit2;

in the else do this
else
{
 printf("Enter 1 to quit, 2 to continue>");
scanf("%d",&quit2);
quit = quit2;
}while(quit != 1);

these following modifications worked with me. i dont know the real problem why u r getting the problem.
Avatar of wkellya

ASKER

nope it still isn't alowing me to leave the loop what I should have said is that I have another while loop that allows the user to start over if the file stats are invalid. I wanted to wrap another do while around the whole thing

do{
 do{
 
   }while(1)/*Everything done in the if is true*/
}while((fname!="Quit")||(fname !="quit"))

but when i type quit in for a filename it gets accepted and goes to "Cannot find file" I just cant get out of the loop.
ASKER CERTIFIED SOLUTION
Avatar of ozo
ozo
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial