read回来-1

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。

貌似可以结贴了。