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;
}
------解决方案--------------------
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的信息.
------解决方案--------------------
------解决方案--------------------
用feof和ferror判断错误
------解决方案--------------------
和EOF作比较吧,-1多半是EOF
------解决方案--------------------
这里有错误。
char * pFileContent = (char *)malloc(fileSize);
这里你分配的堆,只读属性。
之后
len = read(fid, pFileContent, fileSize);
你是向缓冲区写如数据啊。
所以你把pFileContent 定义数组形式就可以了。
刚才没自己看。Sorry。
貌似可以结贴了。