首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个关于文件读的有关问题

2012-07-29 
一个关于文件读的问题~从一个bin档读数据。bin里全是1、0混搭的数据。8位、8位相加,一直累加。。。11111111111111

一个关于文件读的问题~
从一个bin档读数据。
bin里全是1、0混搭的数据。
8位、8位相加,一直累加。。。
11111111111111110000000000000000000……
8位+8位+8位 一直加到16位
即,一个byte+一个byte一直加到word

我的想法是fread,然后放入数组中。然后类型转换,然后求和。

大家有什么好思路,一起讨论下。。。

有码更好。。。老大出的题,说40行搞定。。。我搞了一晚上光想了个思路。。。一会儿实现下。。。

求指点。。。

[解决办法]

C/C++ code
#include <iostream>#include <stdio.h>int main(){    FILE *f = fopen("main.cpp", "rb");    if (!f) {        std::cerr << "Error: Cannot open File "<< std::endl;        return -1;    }        // Get file size:    fseek(f, 0, SEEK_END);    const long N = ftell(f);    fclose(f);    f = fopen("main.cpp", "rb");    char* buf = new char[N+1];    fread(buf,1,N,f);    buf[N]= '\0';    printf("%s", buf);    return 0;}
[解决办法]
char bin[9];
循环fscanf(f,"%8s",bin);
[解决办法]
先建一个int aa[]数组,然后用fread一个字节一个字节读,放在aa数组里面,最后再对aa数组相加,因为8位+8位一直加肯定会到16位,所以用int数组
[解决办法]
C/C++ code
#include <stdio.h>#include <stdlib.h>int main(int argc,char **argv){    FILE *fp;    unsigned short n=0;    unsigned char s;    fp = fopen(argv[1],"r");    while(fread(&s,1,1,fp))    {   //      printf("%x ",s);        n += (unsigned short)s;        if(n&(1<<15)){        printf("%d\n",n);        n=0;        }       }       fclose(fp);    return 0;} 

热点排行