【发布时间】:2018-12-13 10:53:44
【问题描述】:
情况很简单,但我不知道为什么会溢出缓冲区。我正在尝试打印文件的内容。将static int 分配给count 是可行的,但是任何找出文件大小的方法都会导致出现此错误并退出程序。
来源:
char path[] = "upload/";
strcat(path, filename);
FILE *file;
file = fopen(path, "r");
fseek(file, 0, SEEK_END);
int count = ftell(file);
printf("%d\n",count);
char *buffer = malloc(count);
fseek(file, 0, SEEK_SET);
fread(buffer, count, 1, file);
printf("%s\n", buffer);
free(buffer);
fclose(file);
任何帮助将不胜感激!
【问题讨论】:
-
ftell返回一个长整数 -
你不能
strcat到这样的数组。 -
您忘记为终止 NUL 字符分配一个额外的字节
-
此外,您没有检查这些函数中的 any 的返回值。你必须检查
fopen、malloc、fseek、fread等的返回值并采取行动。如果你不这样做,你将永远 有什么线索。