我正在编写一个代码,该代码从另一个程序获取1024个数据包,将它们打印到控制台并将它们写入txt文件。现在数据包传输得很好,接收器成功打印到控制台,全部1024个数据包。但是,当我打开txt文件时,我发现它在第972个数据包的中间停止写入。我在txt上的输出是这样的:
Binary Buffer1: 01111000110 :966
Binary Buffer2: 01111000111 :967
XOR: 00000000001
Binary Buffer1: 01111001000 :968
Binary Buffer2: 01111001001 :969
XOR: 00000000001
Binary Buffer1: 01111001010 :970
Binary Buffer2: 01111001011 :971
XOR: 00000000001
Binary Buffer1: 01111001100 :972
Bin
在Bin之后它就停止了。我对fprintf的代码部分是这样的:
if(message_to_send[0]=='\0'&&message_to_send2[0]=='\0')
{
n = recvfrom(sockfd,message_to_send,5,0,(struct sockaddr *)&cliaddr,&len);
sayi1=atoi(message_to_send);
printf("Binary Buffer1: %s :%d\n",byte_to_binary(sayi1),sayi1);
fprintf(f, "Binary Buffer1: %s :%d\n", byte_to_binary(sayi1),sayi1);
sendto(sockfd,message_to_send,n,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
}
else if (message_to_send[0]!='\0'&&message_to_send2[0]=='\0')
{
n2 = recvfrom(sockfd,message_to_send2,5,0,(struct sockaddr *)&cliaddr,&len);
sayi2=atoi(message_to_send2);
printf("Binary Buffer2: %s :%d\n",byte_to_binary(sayi2),sayi2);
fprintf(f, "Binary Buffer2: %s :%d\n", byte_to_binary(sayi2),sayi2);
sendto(sockfd,message_to_send2,n2,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
}
此代码块处于循环中,因此它会打印所有1024个数据包。我不知道可能是什么原因。写入文本文件时没有限制吗?
感谢您的帮助。
答案 0 :(得分:-1)
你是否在程序结束时fclose文件并且真的达到了这个fclose?否则缓冲文件IO可能无法写入文件。