fread函数 读取二进制文件每次读取8位,怎么写

fread(int*a=newint[sizeof(文件大小)],8,sizeof(文件大小),文件流)求教啊... fread(int *a=new int[sizeof(文件大小)],8,sizeof(文件大小),文件流)

求教啊
展开
 我来答
Linyar
2014-06-07 · TA获得超过757个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:249万
展开全部
#include <stdio.h>
#include <stdlib.h>
//读取字节数
#define READ_BYTES 1
int main()
{
    //打开文件
    FILE *fp = fopen("文件名", "rb");   //rb:以二进制方式读取
    if(fp == NULL)
    {
        printf("文件打开失败!");
        return -1;
    }
    
    //一次读取READ_BYTES字节,当READ_BYTES=1时为8位(1字节=8bit)
    int rc;
    char buff[READ_BYTES];
    while((rc=fread(buff, 1, READ_BYTES, fp)) != 0)
    {
        //读取的结果在buff中,处理逻辑如下
        //...
    }
    
    //关闭文件
    fclose(fp);
    
    return 0;
}
更多追问追答
追问
不行啊,读取出的都是乱码,我用matlab就能读取出数据,
fid=fopen('哈哈哈哈哈,'r');
a=fread(fid,'int8');
fclose(fid);
你看看,这样怎么改改
追答
你的要求的是按8位读出二进制文件,汉字是多字节字符,如果你每读出一个就直接输出,汉字肯定是乱码了。
如果文件是按行存储的,我建议你按行读出,一次不要限于8位,一次读出一行,这样输出就没有问题了。
felithuang
推荐于2017-09-14 · TA获得超过849个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:726万
展开全部
8位就是一个字节呀。
char c;
fread(&c, 1, 1, fp);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式