Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析时遇到问题”;文件服务器命令";在C中_C_String_Parsing_Strchr - Fatal编程技术网

解析时遇到问题”;文件服务器命令";在C中

解析时遇到问题”;文件服务器命令";在C中,c,string,parsing,strchr,C,String,Parsing,Strchr,命令的格式如下: 命令文件名字节\n文件内容 我在分离ADD、filename和字节数方面没有问题,但我不确定如何获得server命令的其余部分,即文件内容 这就是我解析每个命令的方式。当前要获取文件内容,我将获取最左边的字符*,即“\n”。文件内容char*从不从NULL更改 command = strtok( message, " \n" ); file = strtok( NULL, " " ); bytes = atoi( strtok( NULL, "\n" ) ); file_con

命令的格式如下:

命令文件名字节\n文件内容

我在分离ADD、filename和字节数方面没有问题,但我不确定如何获得server命令的其余部分,即文件内容

这就是我解析每个命令的方式。当前要获取文件内容,我将获取最左边的字符*,即“\n”。文件内容char*从不从NULL更改

command = strtok( message, " \n" );
file = strtok( NULL, " " );
bytes = atoi( strtok( NULL, "\n" ) );
file_contents = strchr( message, '\n' );
关于如何获取文件内容有什么建议吗?

我会的

command = strtok( message, " \n" );
file = strtok( NULL, " " );
bytestr = strtok( NULL, "\n" );
bytes = atoi( bytestr );
file_contents = bytestr + strlen(bytestr) + 1;

假设
file\u内容
bytestr
都是
char*

,您确定在字节
\n
文件内容中嵌入了一个真正的换行符(ASCII 10 0xa),还是仅仅是一个
反斜杠
后跟
n
?如果它是一个换行符,它将被
字节
调用使用,导致
文件内容=strchr(消息'\n')
指向消息末尾的换行符(如果存在)。再次使用
strtok
应该足够
file\u contents=strtok(NULL,“\n”)(以换行符或null终止字符结尾(如果不存在换行符)。