请教fread怎样遍历把读到的内容?谢谢如下程序,fread保存到了pbuf ?能对 pbuf遍历么?是否必须把pbuf赋值给
请教fread怎样遍历把读到的内容?谢谢
如下程序,fread保存到了pbuf ?
能对 pbuf遍历么?
是否必须把pbuf赋值给一个字符串数组?最好别这样
直接遍历一个字符一个字符的pbuf并做一些判断可以吗?
不想赋值2次。多谢啊
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <fcntl.h>
#include <unistd.h>
#define BUFSIZE 10000000
int main()
{
FILE *file;
file = fopen("test.txt","rb");
char *pbuf = (char *)malloc(10000000);
memset(pbuf, 0, 10000000);
fread(pbuf,1,10000000,file);
return;
}
[最优解释]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <fcntl.h>
#include <unistd.h>
#define BUFSIZE 10000000
int main()
{
FILE *file;
file = fopen("test.txt","rb");
char *pbuf = (char *)malloc(10000000);
memset(pbuf, 0, 10000000);
int rdLen = fread(pbuf,1,10000000,file);
//------------------ 遍历读取到的数据
for(int i=0; i<rdLen; ++i)
{
if( pbuf[i] == 1) ;
}
if(pbuf) free(pbuf);
//-------------------
return 0;
}
[其他解释]首先,不是把fread保存到了pbuf中,而是读取数据到pbuf中。
第二,都是读到内存了,怎么不能操作?
第三,自己看一下fread的函数原型就知道了,不是必须为char* 任何的缓冲区都是可以的。
第四,不是到内存了么,做你想做的事!
自己动手调试一下和看一下基础。
[其他解释]fread的返回值为读入的字节数,之后根据这个大小你就可以遍历pbuf了.
[其他解释]最好判断一下,你的文件打开是否成功,还有你的这个pbuf是否申请空间成功。一下子申请这么长的空间,我感觉没有必要,你完全可以分批分次的去读取文件内容,然后再pbuf里遍历,之后再赋值是可以的。
[其他解释]你这个程序还有些问题呢,
首先fopen没有判断是否打开成功.
再有结束时没有关闭文件.
因为你是rb方式打开文件的, 读取回来的就是你文件中保存的实际数据.
如果你输入txt中的是123456这样的串, 那么应该pbuf中保存的就是: 0x30 0x31 ...这样的一个数据,
可以直接使用 %C输出成字符.
for(int i=0; i<rdLen; ++i)
{
printf("%c",pbuf[i]) ;
}
[其他解释]我不知道怎么遍历啊
[其他解释]网上的例子一大推,read fread。。。可以查一下glibc
[其他解释]
多谢啊,但是可以从字符串pbuf的尾部,也就是from end to start遍历吗?
另外只能一个字节一个字节的遍历,不能以字符为单位遍历啊?
多谢了
[其他解释]
read函数,在网上找的例子没有一个好用的郁闷
[其他解释]不对啊,你这样好像文件内容啥都没读进来,如果我int rdlen去掉,就报错了。
好像只是读了个文件长度?
[其他解释]fread是返回实际读取的数据长度. 如果成功的话, 具体看fread的函数说明.