我從std中讀取異常困難的時間,在空間上分割,然後將這些標記放入數組中。 (忽略的80個字節的分配,這是測試只是暫時的)在stdin上使用strtok時遇到問題
char* inputLine = (char*)malloc(80);
char* commands[80];
char* input;
int i;
fgets(inputLine, 80, stdin);
input = strtok(inputLine, " \n");
for (i=0; input != NULL; i++) {
memcpy(commands[i], input, sizeof(input));
input = strtok(NULL, " \n");
}
隨着
command1 command2 command3
輸入輸出應該
commands[0] = "command1"
commands[1] = "command2"
commands[2] = "command3"
然而,輸出我得到的是
commands[0] = "command1"
commands[1] = ""
commands[2] = "command3"
在單步執行調試器時,可以看到命令[0]和命令[1]正確填充。但是,當最後一個memcpy被執行時,它會分配命令[2]並擦除命令[1]。
我對C的經驗非常有限,我感謝有人指出我的愚蠢錯誤!
指針不是數組。你認爲'sizeof(input)'產生了什麼? – Olaf