读书人

请好手帮忙看看这段代码对不对。

发布时间: 2012-11-09 10:18:48 作者: rapoo

请高手帮忙看看这段代码对不对。。。

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
[解决办法]
正常,没有问题。

读书人网 >C语言

热点推荐