我正在尝试使用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);
}
}