我正在开发一款用C语言编写的文件共享程序。有一个函数可以读取数据文件并将数据存储到字符串中,将该字符串返回给主函数,然后主函数会再将其发送回客户端。代码如下:
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();
}
然而,这种方式并不起作用。没有任何显示,当然也没有发送任何内容。但是在函数ListFiles()中我确实得到了正确的显示。我不知道发生了什么事情。我还使用了strcpy(),但仍然无法工作。
char file[30]; char *f; f = file;
这里发生的事情并不好。请花一秒钟思考并正确书写它。 - Griwesfile
将会溢出。 - ridfgets
将会重复使用相同的缓冲区直到文件结束,因此在循环之后,缓冲区将只包含文件的最后一部分。 - Mr Lister