2014-11-14 37 views
0

该命令将在以下形式:遇到问题用C解析“文件服务器的命令”

命令文件名字节\ nfile_contents

我没有麻烦分离ADD,文件名和字节数,但我不知道如何获得服务器命令的其余部分,即文件内容。

这是我如何解析每个命令。目前要获取文件内容,我得到最左边的char *,即'\ n'。 file_contents char *永远不会从NULL更改。

command = strtok(message, " \n"); 
file = strtok(NULL, " "); 
bytes = atoi(strtok(NULL, "\n")); 
file_contents = strchr(message, '\n'); 

有关如何获取文件内容的任何建议?

+0

你确定你有一个真正的换行符(ASCII 10 0xa)嵌入字节'\ n'file_contents或者是简单的'反斜杠'后跟'n'吗? – 2014-11-14 21:55:15

+1

如果是换行符,它会被'bytes'调用消耗,导致'file_contents = strchr(message,'\ n');'指向消息结尾处的换行符(如果存在)。再次使用'strtok'应该足够了'file_contents = strtok(NULL,“\ n”);'(以换行符或空终止字符结尾(如果没有换行符)。 – 2014-11-14 21:58:29

回答

0

我会做

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

假设file_contentsbytestr都是char *