C - 当我将函数 fwrite() 放入循环时写入文件失败
C - write to file faild when I put function fwrite() in a loop
我想通过 Linux 上的 TCP 套接字接收文件。但我只是得到一个空文件。但是,当我删除第 1 行(while)时,一切都会好起来的。我在服务器上的代码如下所示:
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);
}
我可以确定的一件事是 "if(fwrite(...))" 确实执行了,因为我从 if() 中放了一个 putchar('a') 并且我可以在屏幕上得到一些 "a" .所有数据将通过套接字传输new_server_socket_fd
fclose 你之前的文件 return.
我想通过 Linux 上的 TCP 套接字接收文件。但我只是得到一个空文件。但是,当我删除第 1 行(while)时,一切都会好起来的。我在服务器上的代码如下所示:
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);
}
我可以确定的一件事是 "if(fwrite(...))" 确实执行了,因为我从 if() 中放了一个 putchar('a') 并且我可以在屏幕上得到一些 "a" .所有数据将通过套接字传输new_server_socket_fd
fclose 你之前的文件 return.