currently I’m having problems with the function below trying to open a file, no matter what I give it the function can’t seem to open the file. I’m currently passing in “./input.txt” which is a file in the same directory as the executable. Is there anything blatantly wrong with the code that you guys can see?
FILE* openInputFile(char* inputFileName) { FILE* ifp= NULL; printf("%sn", inputFileName); ifp = fopen(inputFileName, "rb"); if(ifp == NULL) { printf("Error opening input file.n"); } return ifp; }
Advertisement
Answer
You are returning a pointer to memory stored on the stack. When the function exits the memory is freed and you are pointing to unallocated memory. You must pass the pointer in as a parameter to return the file name:
void openInputFile(char* inputFileName, FILE* ifp) { FILE* ifp= NULL; printf("%sn", inputFileName); ifp = fopen(inputFileName, "rb"); if(ifp == NULL) { printf("Error opening input file.n"); } }