我需要将文本文件的内容复制到动态分配的字符数组中。
我的问题是如何获取文件内容的大小;谷歌告诉我需要使用fseek和ftell,但是需要以二进制模式打开该文件,这只会得到垃圾数据。
编辑:我尝试在文本模式下打开,但是得到了奇怪的数字。以下是代码(为了清晰起见,我省略了简单的错误检查):
我的问题是如何获取文件内容的大小;谷歌告诉我需要使用fseek和ftell,但是需要以二进制模式打开该文件,这只会得到垃圾数据。
编辑:我尝试在文本模式下打开,但是得到了奇怪的数字。以下是代码(为了清晰起见,我省略了简单的错误检查):
long f_size;
char* code;
size_t code_s, result;
FILE* fp = fopen(argv[0], "r");
fseek(fp, 0, SEEK_END);
f_size = ftell(fp); /* This returns 29696, but file is 85 bytes */
fseek(fp, 0, SEEK_SET);
code_s = sizeof(char) * f_size;
code = malloc(code_s);
result = fread(code, 1, f_size, fp); /* This returns 1045, it should be the same as f_size */
fp
是否为 NULL。 - Nick Dandoulakis