我正在编写一个代码,该代码从另一个程序获取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个数据包。我不知道可能是什么原因。写入文本文件没有限制吗?

谢谢您的帮助。

最佳答案

您是否在程序结尾处关闭文件,并且确实达到了该关闭操作?否则,缓冲的文件IO可能不会写入该文件。

关于c - fprintf不会编写整个过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23564628/

10-15 01:40