我需要将文本文件的内容复制到动态分配的字符数组。
我的问题是获取文件内容的大小;谷歌显示我需要使用fseek
and 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 */
问题的根源就在这里:
FILE* fp = fopen(argv[0], "r");
argv[0] 是您的可执行程序,而不是参数。它肯定不会是文本文件。尝试 argv[1],看看会发生什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)