gpt4 book ai didi

根据字符串中的文件路径计算文件大小

转载 作者:行者123 更新时间:2023-11-30 17:22:31 26 4
gpt4 key购买 nike

一个小前提:服务器正在通过套接字接收消息“get text.txt”我必须计算该文件的大小并将其发送回来,所以这是到目前为止的代码:

                /*Receive command
*
*/
char * file_path;

//Wait for command
if ( recvfrom (sockfd_child, command, PACKET_SIZE, 0, (struct sockaddr *) addr_client, &addr_client_lenght) < 0) {
perror("server: error in recvfrom for command packet");
exit(1);
}
//check first 4 character (COMMAND_SIZE) of command packet send by the client to identify the operation
if (!strncmp(command, "get ", COMMAND_SIZE)) {
file_path = malloc(sizeof(command)-COMMAND_SIZE);
strcpy(file_path, DIRECTORY);
strncat(file_path, command+COMMAND_SIZE, PACKET_SIZE-COMMAND_SIZE);
printf("Getting file in path: '%s'\n", file_path);
int file_size = get_file_size(file_path);

计算file_size的函数是

long get_file_size(char * file_name) {
long size;
FILE * file;
if ( !( file = fopen ( file_name , "rb" ) ) ) {
perror("file: error calculating size");
exit (1);
}
fseek (file , 0 , SEEK_END);
size = ftell (file);
rewind (file);
fclose(file);
return size;
}

DIRECTORY 是一个常量,设置为 ./files/
COMMAND_SIZE 设置为 4
程序的网络部分运行良好,命令字符串传输成功。
程序在 perror 打印文件:计算大小时出错:没有这样的文件或目录处停止在函数中,但前面的 printf 打印文件所在的当前路径Getting file in path: './files/text.txt'
所以我猜错误在于我如何将文件路径与命令“get”或其他我无法理解的地方分开。你能帮助我吗?对于任何错误或困惑,我们深表歉意,但现在是凌晨 4:00 :)

最佳答案

这听起来很明显,但是尝试使用“printf”来验证文件的名称及其路径。可能是空格什么的有问题。顺便说一句,您可以使用脚本来计算文件的大小(如果您在 Linux 中,则有很多命令来执行此操作),并将该值作为参数传递给程序。

关于根据字符串中的文件路径计算文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28006726/

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