从一个文件中把数据复制到另外一个文件中,我的代码如下:
while (i<38016)//文件大小为38016字节,i(unsigned int),temp(char)
{
fread(&temp,1,1,fyuv);
fwrite(&temp,1,1,fyuv1);
i++;
}
结果文件有38k,其中前面大概10k是正确的(与源文件进行二进制代码比对),后面的约28k就重复前面10k的最后一个字节,也就是后面28k所有字节完全一样。
若把代码换成:
do
{
i=fread(&temp,1,1,fyuv);
fwrite(&temp,i,1,fyuv1);
}while(i>0);
则得到的结果文件大概只有10k,且这10k与源文件的前10k一样(比对二进制代码),但是后28k就没有了。
请问我该怎么做才是正确的呢?
ps:如果用CFile类则可以正确地复制文件,但是我现在想用fread函数来实现。
fread大概只能读10k
你这个38016的文件, 大概在10k左右有段数据和文件结束标志格式相同, 文本方式读取到10k左右就认为文件结束了( 真正的文本文件, 结束标志可能在磁盘簇的剩余空间中 )所以第一种方式:固定读取38016次, 每次往新文件中写一个字节; 前10k次能读取到内容, fread返回值是1, 这样写过去的一字节就是读取的...
C语言 fread能从文件中读10bit数据存入int型中吗?
内存、文件操作都只能以字节为单位,字节是最小的单位,也就是 8bit ,所以做法是先读 16bit 。再 & 0x03FF
文件复制,请用C语言。用fread函数最好。
a+是文本文件的读取方式,改成ab会好很多(2进制读取),fread一次最多只能读进64K的东西,fread的第2个参数要小于64K。你的40W肯定不行,建议你先把读取弄好,然后再去想存储
C语言中fread函数,当文件流缓冲中剩余长度小于需要读取的长度时的问题...
fread在fp_in缓冲区中剩余字节为0的时候才会产生一个异常让内核去处理,内核收到这个异常,就会读取文件,将fp_in的缓冲区重新填满。也就是说:如果只剩下15个了,你要读20个,那么就会先读15个到g_buffer里,然后产生一个异常,内核重新填满缓冲区,然后再从缓冲区里读5个字节。
C语言 用fread 读取文件的时候,只能读第一行,后面的都读不出来怎么回事...
是你多输出了'\\n'的缘故吧。解决办法:1-不写'\\n'2-读取'\\n
fread函数问题
文件指针是自动移动的,你只能读第一个,肯定是程序代码有问题,把代码贴出来看看。
...写入的文件字节数很多,为什么读的时候只能读到固定字节的数,而且...
size (例如 2048字节)while (fgets(buff,buff_size,fin) !=NULL){ };fgets 是读一行,行长度不大于 buff_size , buff 里就放 完整的一行,大于,就读入\/放入 buff_size 个字节。fread, 也要提供 大小。buff_size 数值大小 也可以很大,只要动态分配能成功分配就行,并不限于 1k,2k.
c语言中fread函数怎么用
c语言中fread函数语法为size_t fread( void *restrict buffer, size_t size, size_t count, FILE *restrict stream )。buffer是指向要读取的数组中首个对象的指针,size是每个对象的大小(单位是字节),count是要读取的对象个数,stream是输入流。通过fread函数可进行数据读取,返回成功读取的对象个数...
C语言~我写一个TXT格式的文件在D盘 然后用这个语句读入 可是显示出来...
fread函数、fwrite函数只能读写二进制格式的文件。因为你的文件是文本格式的(除非你是用fwrite函数写入的数据),所以不能用fread函数正确地读出来。
php 怎么用zend加密
ZendGuard是一款php的加密工具,它可以编译php源码变为字节码 加密的具体步骤如下:1:在网上下载ZendGuard 关于PHP文件加密的软件 2:安装完毕以后,找到bin目录下zendenc.exe 。注:(别忘记搞上破解版。)3:使用方法,先找一个你要加密的php文件,比如iii.php。4:然后在命令行里面输入: zendenc ...