gpt4 book ai didi

c - fread() 没有正确写入字符串

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:46 24 4
gpt4 key购买 nike

<分区>

我正在尝试使用 fread() 将文件的内容写入 char 数组,但它似乎不起作用。这是我正在执行的程序部分。我包含了很多跟踪语句来检查每个步骤是否给出了正确的输出。他们似乎都很完美。 fileSize 正确显示。 sendFileBuf 的大小也正确显示。当它进入 while 循环时,那里的 printf 语句只执行了两次,即使 fileSize 值在 62000 左右。当我打印sendFileBuf,它会输出奇怪的字符,比如ÿØÿá。我已经用几个文件试过了,但总是有一些错误。请帮帮我!

void sendFile(fileNode fileToSend, int sockFd)
{
int fileSize;

fileSize = atoi(fileToSend.fileSize);
printf("file size after conversion to int: %d\n", fileSize);

//Sending file size
if(send(sockFd, fileToSend.fileSize, sizeof(fileToSend.fileSize), 0) < 0)
{
perror("Sending file size");
close(sockFd);
exit(1);
}

//Send actual file
FILE *newFp;
char path[50];
strcpy(path, "SharedFiles/");
strcat(path, fileToSend.fileName);

if((newFp = fopen(path, "r")) == NULL)
{
perror("Opening file");
exit(1);
}

//Write file to buffer and send
char sendFileBuf[fileSize];
memset(&sendFileBuf, 0, sizeof(sendFileBuf));
printf("Size of sendfilebuf: %ld", sizeof(sendFileBuf));

fread(&sendFileBuf, 1, fileSize, newFp);

printf("sending file buffer %s\n", sendFileBuf);
if(send(sockFd, sendFileBuf, sizeof(sendFileBuf), 0) < 0)
{
perror("Sending file");
fclose(newFp);
close(sockFd);
exit(1);
}
}

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