PDA

View Full Version : Urgent! Need Help with C executable


Aurel
Nov18-04, 10:19 PM
I've written the following code to experiment on reading from text files...however, the "fopen" statement is apparently returning a NULL pointer. What could be the problem here?...trial.txt is in the same directory as the executable. In addition, if I put return 1 after the printf("ERROR"); line...the executable window flashes as if system("pause") wasn't specified--how do i still get to view the executable after specifying return 1?? Also when i do a debug, it returns the error

MAIN-T~1.EXE: No such file or directory.
<gdb>

Now the part I really don't get...if i run this program from DOS...it works!...it prints Success and the content of the trial.txt file...how could that be?


#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ FILE *ptr;
char c;
ptr=fopen("trial.txt", "r");
if(!ptr)
{ printf("ERROR");
}
else{ printf("Success");

while(1)
{
c=fgetc(ptr);
if(c!=EOF)
{
printf("%c",c);
}
else {break;}
}
printf("Now closing file...\n");
fclose(ptr);
system("PAUSE");
return 0;
}
}

gerben
Nov19-04, 01:07 AM
probably where you run the executable the path is not set to include the current directory (while in DOS it is)

You do not get the pause because if you return the rest of the code (after the return statement) is not executed, so to still have the pause you have to place the system("pause") before the return statement.

ceptimus
Nov19-04, 03:27 AM
If you're running Visual C++ it puts the executable in the 'debug' directory by default, or 'release' if you set it to that.

Put a path in the filename. If you're on Windows, remember that the backslash character is used as an escape character by C, so you have to double them up. For example:

"c:\\my files\\test\\debug\\trial.txt"

Aurel
Nov19-04, 06:33 AM
My code works now...the path was wrong....for some reason all my files are saved on the D: but DevC is in the C: drive....and I didn't think to put the system(pause) in that part of the code....but hey, all's well now...thanks alot!

Aurel.. :smile: