帮助使用Malloc / freads / fwrites?第一个字母没有复制过来?
while((c = getc(in))!=EOF){
fread(point, length, 1, in);
fwrite(point, length, 1, final);
}
答案 0 :(得分:3)
getc
将字符读入c
。因此第一个字符将存储到c
中,下一个字符将存储在第二个字符中。
然后fread
将一堆字符(count
)读入ptr
指向的内存中。所以第二个,第三个,......,计数+第1个字符将被存储到该存储器中。
然后fwrite
写下它们(当然)。
(然后你的程序重复这个,直到它到达文件的末尾)
答案 1 :(得分:1)
假设您从文件和输出到文件的输入正常工作,这是您提供的代码块的一些问题:
您将ptr
声明为(int*)malloc(count)
。问题是,ptr
这里被视为一个整数数组,这意味着每个元素的大小为4个字节而不是1个,所以count
必须是4的倍数。如果你想使用ptr
存储字符符号,将其更改为ptr = (char*)malloc(count)
,或ptr = (int*) malloc(sizeof(int) * count)
如果您的符号符号为c
。实际上是4字节整数;
您读取变量fread
中的字符,但您没有使用它。
根据this description
,fwrite
和fread
的第二个参数是元素的大小,第三个是您想要读/写的元素数
如果您想在文件结束之前执行while ((c=getc(in)) != EOF)...
,则无需执行{{1}},只需按照this stackoverflow post
希望这有帮助。