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

read回来-1

2012-11-08 
read返回-1int fileSizeint fid//文件句柄int lenfid open(szFileName,O_RDWR|O_CREAT,0755)if (!fi

read返回-1
int fileSize;
int fid;//文件句柄
int len;
fid = open(szFileName,O_RDWR|O_CREAT,0755);
if (!fid)
{
printf("\r\n!fid\r\n");
errcall(__FILE__, __LINE__, "open-Hash文件失败");
return FALSE;
}
fileSize = checkfile(szFileName);
printf("\r\nGetFileHash=%d\r\n",fileSize);
char * pFileContent = (char *)malloc(fileSize);
printf("\r\nfileszie=%d\r\n",fileSize);

len = read(fid, pFileContent, fileSize);
if(len != fileSize)
{
printf("\r\nlen != fileSize\r\n");
printf("\r\nlen =%d\r\n",len);len = -1
  errcall(__FILE__, __LINE__, "文件个数错误");
return FALSE;
}

[解决办法]

C/C++ code
size_t fread( void *buffer, //指向数据存放缓冲区的指针 size_t size, //单个字符占用字节数 size_t count, //要进行读写多少个size的字符 FILE *stream //指向某个已打开文件的FILE类型指针 );
[解决办法]
看下errno的信息.
[解决办法]
探讨

C/C++ code


size_t fread(
void *buffer, //指向数据存放缓冲区的指针
size_t size, //单个字符占用字节数
size_t count, //要进行读写多少个size的字符
FILE *stream //指向某个已打开文件的FILE类型指针
);





请使用fread()

[解决办法]
用feof和ferror判断错误
[解决办法]
和EOF作比较吧,-1多半是EOF
[解决办法]
这里有错误。

char * pFileContent = (char *)malloc(fileSize); 

这里你分配的堆,只读属性。

之后

len = read(fid, pFileContent, fileSize);

你是向缓冲区写如数据啊。

所以你把pFileContent 定义数组形式就可以了。

刚才没自己看。Sorry。

貌似可以结贴了。

热点排行