I am working on some kind of file sharing program which is written in C. There is a function that can read a data file and store the data into a string and return this string to main function and the main function send back to client. Codes are shown below
char* ListFiles(){
FILE *fp;
char file[30];
char *f;
if((fp=fopen("list","r"))==NULL)
{
...
}
while (!feof(fp))
{
fgets(file,50,fp);
}
fclose(fp);
f=file;
printf("%s",f); //get display!!!
return f;
}
int main(){
char *files;
...
...
files=ListFiles();
printf("%s",files); //nothing display!!
sent();
}
However, this method doesn't work. There is nothing display and of course nothing is sent. But I do get the correct display in function ListFiles(). I don't know what happen. I also use strcpy() and it still fail to work.
char file[30]; char *f; f = file;nothing good happens here. Think a second about it and write it properly.filevariable can only hold 30 characters and you're reading more than that.filewill overflow.fgetswill be called repeatedly with the same buffer until the file reaches its end, so that after the loop the buffer will contain only the last part of the file.