请好手帮忙看看这段代码对不对。
请高手帮忙看看这段代码对不对。。。C/C++ code有一个文件,共1千万个二进制的数,大概40MB,我想读入,然后再屏
请高手帮忙看看这段代码对不对。。。
C/C++ code有一个文件,共1千万个二进制的数,大概40MB,我想读入,然后再屏幕上显示。程序可以执行但是已经四十分钟了,还在输出,请问哪里有问题么?#include <stdio.h>#include <malloc.h>#include <stdlib.h>void main(){ int i ; int filebytes; int *p; FILE *fo; fo = fopen("data_1千万.txt","rb"); filebytes = filelength(fileno(fo)); p = (int *)malloc(sizeof(int)*filebytes); int getc(FILE *fo); if(fo == NULL) { printf("该文件不存在"); } else { for(i = 0;i < filebytes; i++) p[i] = getc(fo); } for(i = 0;i < filebytes; i++) { printf( "%d ",p[i]); if(i % 25 == 0) printf(" \n "); } fclose(fo); free(p);}
[解决办法]printf是很耗时间的。。
你可以一边读入一边输出,这样就省去保存的时间
[解决办法]大哥 你看下 fread的参数嘛!!学习C主要的就是要多查msdn,
函数原型
fread(buffer,size,count,fp);
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。
char *p [256];
fread(p,256,1,fo);
printf("%s\n",p);
输出那个接受的指针就行了!!!
[解决办法]试试吧,看对不,我一直做的是c++用 ofstream 打开文件比较方便,封装了很多操作,方便快捷...呵呵
[解决办法]直接打印出来是很费时间的,你可以把输出重定向到一个文件中再在那里面看输出就可以了
例如 linux 可以 ./program >> out.txt
[解决办法]正常,没有问题。