gpt4 book ai didi

C - 将缓冲区的内容写入文件的正确方法?

转载 作者:行者123 更新时间:2023-11-30 20:13:25 25 4
gpt4 key购买 nike

我当前正在使用 fwrite() 将 char[] 缓冲区的内容写入文本文件。

文档位于this link显示需要 size_t 来表示大小,但是整数会有所不同吗?我的输出文件显示为空白。

作为引用,这里是我所拥有的内容的片段:

char* output_file;
int buffer_size = 20;

int sockfd = 0;
int bitsReceived = 0;
int totalBitsReceived = 0;

char recvBuffer[buffer_size];

struct sockaddr_in serv_addr, client_addr;
socklen_t alen = sizeof(serv_addr);

memset(recvBuffer, '0', sizeof(recvBuffer));
memset((char *)&serv_addr,0,sizeof(serv_addr));

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(server_port);
serv_addr.sin_addr.s_addr = inet_addr(server_ip);

if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
perror("Cannot create socket");
return 0;
}

/* Open the input file to read */
FILE *fp;
fp = fopen(input_file, "r");
size_t nread;

if (fp == NULL) {
perror("Error: ");
return(-1);
}

FILE *outputFilep;
outputFilep = fopen(output_file, "w");

bzero(recvBuffer, buffer_size);

/* Read input from server and write it to output file */
while((bitsReceived = recvfrom(sockfd, recvBuffer, buffer_size, 0, (struct sockaddr *)&serv_addr, &alen)) > 0) {
totalBitsReceived += bitsReceived;
size_t m = fwrite(recvBuffer, sizeof(char), (size_t)bitsReceived, outputFilep);

if (m < 0) {
perror("Error: ");
}
}

最佳答案

不会,您可以使用 int - 只要您确定它永远不会为负数,因为这会是一个问题。

-1值可以作为错误指示符返回。因此,您必须在调用recvfrom()后立即检查它。

关于C - 将缓冲区的内容写入文件的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30689225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com