简体   繁体   English

C-将函数fwrite()放入循环时,写入文件失败

[英]C - write to file faild when I put function fwrite() in a loop

I want to receive a file through a TCP socket on Linux. 我想在Linux上通过TCP套接字接收文件。 But I just get a empty file. 但我只是得到一个空文件。 However when I delete line 1 (while), anything will go okay. 但是,当我删除第1行(同时)时,一切都会好的。 My code on server looks like this: 我在服务器上的代码如下所示:

while(1) 
{ 



  FILE *fp = fopen(file_name, "w"); 
  if(NULL == fp) 
  { 
    printf("File:\t%s Can Not Open To Write\n", file_name); 
    exit(1); 
  } 

  bzero(buffer, BUFFER_SIZE); 
  int length = 0; 
  while((length = recv(new_server_socket_fd, buffer, BUFFER_SIZE, 0)) > 0) 
  { 

    if(fwrite(buffer, sizeof(char), length, fp) < length) 
    { 
      printf("File:\t%s Write Failed\n", file_name); 
      break; 
    } 
    bzero(buffer, BUFFER_SIZE); 
} 

One thing I can make sure is that "if(fwrite(...))" do execude cause I put a putchar('a') out of if() and I can get some "a" on my screen. 我可以确定的是,“ if(fwrite(...))”确实执行了,因为我在if()中放了一个putchar('a'),并且在屏幕上可以看到一些“ a”。 All data will be transfered through socket new_server_socket_fd 所有数据将通过套接字new_server_socket_fd传输

返回之前请先关闭文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM