Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 读取文本文件的完整内容后,fread()失败_C_Windows_Winapi_Text_Text Files - Fatal编程技术网

C 读取文本文件的完整内容后,fread()失败

C 读取文本文件的完整内容后,fread()失败,c,windows,winapi,text,text-files,C,Windows,Winapi,Text,Text Files,我已经编写了这段代码,它将文本文件的内容读入缓冲区,并通过套接字发送缓冲区,直到文件结束 代码工作正常,在通过套接字发送完整文件后,fread()失败,但是,根据我在通过套接字发送完整文件时的理解,由于条件(while(fpSend!=NULL)),甚至不能调用fread():( 请查看代码,如果发现任何错误,请务必告诉我:( void sendingFile() { 文件*fpSend; if((fpSend=fopen(“Client0.txt”,“r+b”))==NULL) { Messa

我已经编写了这段代码,它将文本文件的内容读入缓冲区,并通过套接字发送缓冲区,直到文件结束

代码工作正常,在通过套接字发送完整文件后,fread()失败,但是,根据我在通过套接字发送完整文件时的理解,由于条件(while(fpSend!=NULL)),甚至不能调用fread():(

请查看代码,如果发现任何错误,请务必告诉我:(

void sendingFile()
{
文件*fpSend;
if((fpSend=fopen(“Client0.txt”,“r+b”))==NULL)
{
MessageBox(空,
“无法打开文件”,
“错误!”,
MB|U图标连接|
MB_OK);
退出(退出失败);
}
字符文件缓冲区[2000];
fseek(fpSend,0,SEEK_END);
大小文件大小=ftell(fpSend);
fseek(fpSend,0,SEEK_SET);
while(fpSend!=NULL)
{
int bytes_read=0;

如果((bytes_read=fread(file_buffer,1,12,fpSend))文件句柄
fpSend
在文件结束后没有变为
NULL
。您应该选中
feof(fpSend);


此外,使用
ftell();
确定文件大小仅在文件大小小于2GB时有效,因为它返回32位带符号的int(size_t)。

文件句柄
fpSend
在文件结束后不会变为
NULL
。您应该选中
feof(fpSend);

此外,使用
ftell();
确定文件大小仅在文件大小小于2GB时有效,因为它返回32位带符号整数(size_t)

void sendingFile()
{
   FILE *fpSend ;
   if((fpSend = fopen("Client0.txt", "r+b")) == NULL)
      {
         MessageBox( NULL,
                     "Unable to open the File",
                     "Error!",
                     MB_ICONEXCLAMATION | 
                     MB_OK);
         exit(EXIT_FAILURE);
      }

  char file_buffer[2000];

   fseek(fpSend, 0, SEEK_END);
   size_t file_size = ftell(fpSend);
   fseek(fpSend, 0, SEEK_SET);
   while(fpSend!=NULL)
   {
         int bytes_read=0;
         if((bytes_read=fread(file_buffer, 1,12, fpSend))<=0)
            {
               char err[128], bread[128];
               itoa(errno,err,10);
               itoa(bytes_read,bread,10);
               MessageBox( NULL,
                           "Unable to copy file into buffer",
                           bread,
                           MB_ICONEXCLAMATION | 
                           MB_OK);
               exit(1);
             }
         /*MessageBox( NULL,
                     file_buffer,
                     "File copied in Buffer",
                     MB_ICONEXCLAMATION | 
                     MB_OK);*/
         if(sendto(socketIdentifier, file_buffer, bytes_read, 0, (struct sockaddr *) &AH_glb_connectedSocket, sizeof(AH_glb_connectedSocket))<0)
            {
               MessageBox( NULL,
                           " NOT SENNT!",
                           "ERROR!",
                           MB_ICONEXCLAMATION | 
                                                    MB_OK);
                                     //exit(1);
            }
         else
            {
                //sent
            }
  }
   MessageBox( NULL,
        "File Sent Successfully!",
        "SENT!",
            MB_ICONEXCLAMATION | 
            MB_OK);
   fclose(fpSend);
}