我一直在努力解決這個問題,我想知道如果有人能找到我做錯了什麼。即時通訊從標準輸入讀取用戶輸入,分解他們通過strtok()輸入的字符串,並將其存儲到char *的數組中。 char *的數組是在while循環之外定義的。while循環清除我的數組? (C)
因此:用戶通過stdin鍵入輸入,並且數組中充滿了來自命令的每個單詞的字符串。
事情是,如果用戶只是命中輸入我想數組保持它的價值!我想要相同的值留在數組中...所以我可以重新執行相同的命令。看起來while循環正在清除char *的數組。這裏是代碼:
char *commands[3];
char *result = NULL;
char delims[] = " "; //a space AND a tab!
while (1) {
printf(PROMPT);
//Gathers user input!
char *input;
char stuff[230];
input = fgets(stuff, 230, stdin);
printf("input has length %i\n", strlen(input));
int helper = strlen(input);
int i = 0;
result = strtok(input, delims);
printf("helper has length %i\n", helper);
printf("commands[0] CHECK 1:%s", commands[0]);
if (helper >1)
{
while(result != NULL)
{
printf("while gets hit!\n");
if (i < 4)
{
commands[i] = result;
result = strtok(NULL, delims);
i++;
}
}
}
printf("commands[0] is CHECK 2:%s", commands[0]);
if (strncmp(commands[0], "step", 4) == 0)
{
lc3_step_one(p);
}
printf("commands[0] is CHECK 3:%s", commands[0]);
}
的的printf的檢查1,檢查2,檢查3所有打印什麼,如果用戶點擊進入。在他們最後輸入「步驟」的情況下,我想要「步驟」留在數組中,從而再次執行!
作業.......? –
你是什麼意思?這是我正在上課的一個項目。就我所做的嘗試解決問題而言,我實際上有一個嘗試的機制來阻止已經存在於代碼中的這種現象......但它並不按照我希望的方式工作。 – Phil