C语言读写文件的问题,疑惑中
#include <stdio.h>#include <math.h>/** int2bin** 将一个unsigned char类型的整数(0~255)转化为一个二进制数组** @param unsigned char intValue 要转化的整数* @param int *binArray 指向二进制数组的指针* @param int n 要转化成的二进制数组的元素个数 * @return void*/void int2bin(unsigned char intValue,unsigned char *binArray,int n) { unsigned char divValue; unsigned char modValue; int index = n-1; //binArray = (char *)malloc(sizeof(char)*8);//函数内部不能申请初址 //binArray[8] = {}; divValue = intValue/2; modValue = intValue%2; binArray[index] = modValue; while(divValue!=0) { modValue = divValue%2; binArray[--index] = modValue; divValue/=2; }}unsigned char bin2int(char *bin,int binSize) { int i,j; unsigned char intValue = 0; for(i=binSize-1,j=0;i>=0;i--,j++) { intValue += (bin[i] * pow(2,j)); } return intValue;}int main() { FILE *fr,*fw; unsigned char dataFromFile[8] = {0};//8*8=64位的数据,每个元素为一个字节 unsigned char dateEncode[8] = {0};//加密后的字节 unsigned char binArray[64] = {0};//64位二进制数据,作为明文 int i,j; /* int test = 255; char testBin[8] = {0}; */ if ((fr=fopen("read.txt","rb"))==NULL) { printf("can not open read.txt for read\n"); return -1; } if ((fw=fopen("write.txt","wb"))==NULL) { printf("can not open write.txt for write\n"); return -2; } while (fread(dataFromFile,sizeof(char),8,fr)) { if (num<8) { for (i=num;i<8;i++) { dataFromFile[i] = 0; } } for (i=0;i<8;i++) { printf("%d ",dataFromFile[i]); int2bin(dataFromFile[i],binArray+i*8,8); } printf("\n"); for (i=0;i<8;i++) { dateEncode[i] = bin2int(binArray+i*8,8); printf("%d ",dateEncode[i]); } printf("\n"); fwrite(dateEncode,sizeof(char),8,fw); } fclose(fr); fclose(fw); /* int2bin(test,testBin,8); for (i=0;i<8;i++) { printf("%d ",testBin[i]); } printf("\n"); test = bin2int(testBin,8); printf("%d \n",test); */ return 0;}