-2
好吧,我会开始说我正在做一个网络服务器。我有一个功能getFileContent
我用它来从我的文件让我的内容,看起来像这样从函数读取文件中的意外行为C
char* getFileContent(char *filename)
{
long length;
char *buffer;
FILE *f = fopen (filename, "r");
if (f) {
fseek (f, 0, SEEK_END);
length = ftell (f);
fseek (f, 0, SEEK_SET);
buffer = malloc (length + 1);
if (buffer) {
fread (buffer, 1, length, f);
}
fclose (f);
}
if (buffer != 0) {
return buffer;
} else {
return NULL;
}
}
并调用这个函数的时候,我得到一些奇怪的行为。
如果我只是这样称呼它
char *fileContent = getFileContent(path);
例如,当我得到filecontent返回,它附加了2或3个怪异的字符。
但是,如果我将它调用两次给同一个变量,它会追加另一组奇怪的字符。
但是,如果我第三次在程序开始时调用函数main
。例如,通过将/etc/hosts/
中的内容转换为完全不同且未使用的变量,它会在代码后面正常打印输出。
我试过看到这个问题,但它似乎很随意,如果有人能帮助我,我真的很感激它。
然后你的函数结束可以用'return buffer;'替换。 –
如果打开文件失败,则读取'buffer'的未初始化值。编译器应该能够警告你这个... –