ファイルの内容をchar配列に書き込もうとしてfread()
いますが、うまくいかないようです。これは、私が実装しているプログラムの一部です。各ステップで正しい出力が得られるかどうかを確認するために、多くのトレース ステートメントを含めました。それらはすべて完璧に見えます。はfileSize
正しく出ます。のサイズsendFileBuf
もちゃんと出ます。while
ループに入ると、値が約 62000printf
であっても、ステートメントは 2 回しか実行されません。いくつかのファイルで試してみましたが、常にエラーが発生します。私を助けてください!fileSize
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);
}
}