我用fopen打开了一个MP3文件,再使用fread,fgetc获取字符,都在读到1AH前一个字节的时候判断结束了。
答案:1 悬赏:10 手机版
解决时间 2021-03-07 17:33
- 提问者网友:不爱我么
- 2021-03-06 20:34
我用fopen打开了一个MP3文件,再使用fread,fgetc获取字符,都在读到1AH前一个字节的时候判断结束了。
最佳答案
- 五星知识达人网友:猎心人
- 2021-03-06 20:48
这种东西要用二进制读写 不能用字符
这些东西里 \0很正常
我写过二进制复制文件 不限格式 文件
你可以参考 记住不能再用\0判断 要用 fp指针返回为空判断
测试 发现 exe文件也可以复制 能正常运行
#include
#include
int main(void)
{
int nLen;
FILE *fp,*fp1;
fp=fopen("123.exe","rb");
fseek(fp,0L,SEEK_END);
nLen = ftell(fp);
//这里用int数组也可以哦 注意用int时把下面三处的nLen+1的+1去掉
void *buffer = (void*)malloc(nLen);
if (buffer==NULL)
{
printf("memory error!\n");
}
fseek(fp,0,SEEK_SET);
fread(buffer,nLen,1,fp);
fclose(fp);
fp1=fopen("456.exe","wb");
fwrite(buffer,1,nLen,fp1);
fclose(fp1);
free(buffer);
}
这些东西里 \0很正常
我写过二进制复制文件 不限格式 文件
你可以参考 记住不能再用\0判断 要用 fp指针返回为空判断
测试 发现 exe文件也可以复制 能正常运行
#include
#include
int main(void)
{
int nLen;
FILE *fp,*fp1;
fp=fopen("123.exe","rb");
fseek(fp,0L,SEEK_END);
nLen = ftell(fp);
//这里用int数组也可以哦 注意用int时把下面三处的nLen+1的+1去掉
void *buffer = (void*)malloc(nLen);
if (buffer==NULL)
{
printf("memory error!\n");
}
fseek(fp,0,SEEK_SET);
fread(buffer,nLen,1,fp);
fclose(fp);
fp1=fopen("456.exe","wb");
fwrite(buffer,1,nLen,fp1);
fclose(fp1);
free(buffer);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯