2014-11-14 35 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 *