【发布时间】:2019-09-17 14:04:54
【问题描述】:
我调用一个方法:
char * buffer = read_string_from_file();
方法如下:
char * read_string_from_file() {
char * filename = "C:/Users/xxxxx/Dropbox/c-programming-test-file.txt"; // later I will give this as a parameter
char * buffer = 0;
long file_length;
FILE * file = fopen (filename, "r");
if (file)
{
fseek (file, 0, SEEK_END);
file_length = ftell (file);
fseek (file, 0, SEEK_SET);
buffer = malloc (file_length);
if (buffer)
{
fread (buffer, 1, file_length, file);
}
fclose (file);
return buffer;
}
}
文件包含:
2461866 -3134537
当用printf("buffer: %s\n\n", buffer); 打印buffer 时,我得到buffer: 2461866 -3134537Files\Jey┘·å¬。相反,我期望:buffer: 2461866 -3134537。如何调整char数组buffer的大小?
【问题讨论】:
-
您没有正确终止字符串,甚至没有检查
fread()是否有效。您还以文本模式打开文件,因此ftell()不会告诉您将读取多少字节。 -
@AndrewHenle 我还是个初学者。 :|如何不以文本模式打开它?用“b”?
标签: c arrays memory-management