int loadfile(char path[255], char *data){
FILE *pFile;
char *buffer;
int lSize;
pFile = fopen(path,"rt");
if(pFile!=NULL){
fseek(pFile, 0, SEEK_END); /
lSize = ftell(pFile);
rewind(pFile);
data = new char[lSize];
if (data==NULL) return 2;
fread(data,1,lSize,pFile);
fclose(pFile);
return 0;
}
return 1;
}
Best way to explain the problem:
char *strBuffer;
char strPath[255];
if(loadfile(strPath, strBuffer)){
printf("File contents: %s\n",strBuffer);
}
When loadfile function is called, and I output the buffer within the function, the contents of the file are outputted. However, after calling the function, NULL will be displayed. This has had me stumped for 2 days, but I just don't see whats wrong.
Note: The example code is not the code used in my program, however they both do the exact same thing, so it shouldn't matter.
strBuffer will be pointing to uninitialized data. I think you meant to pass a char** instead of a char* judging from your code.
Yes, you'll need a reference to a pointer, or a pointer to a pointer like skywing said. Or you could always initialize a buffer before the function call (which would require you to have a seperate GetFileSize() type function).
The easiest way to fix this is just change
int loadfile(char path[255], char *data); // Can't pass a pointer to a pointer using one *
to
int loadfile(char path[255], char *&data); // Use a reference to a pointer for easiness' sake (vs. pointer to a pointer)
Also note that you'll need to add a null terminator on the end of that buffer if you're dealing with strings (IIRC).
Awsome. Thanks Moon & Sky, it works now.