我正在爲一個shell實現一個歷史記錄功能,並且在數據結構上掛斷了電話。我已經實現了一維指針數組來實現char數組。我的問題是我現在試圖讀取這些字符數組(字符串C),並將它們顯示在屏幕上以顯示最近的命令。但是隻有最近的命令纔會輸出。它看起來像所有東西都是正確添加的,因爲我在添加期間輸出了一條消息,但在檢索中看起來有些混亂。從一維字符串中獲取字符串
將指針數組添加到char。
/* Size Less than MAX */
if (size < MAX_COMMAND)
{
/* Add Command to History */
history[size++] = inputBuffer;
printf("%s Added", inputBuffer);
}
/* Size Equals Max */
else if (size == MAX_COMMAND)
{
/* Add Command to History */
history[start++] = inputBuffer;
printf("%s\n Added2", inputBuffer);
/* Circulize Array */
start %= MAX_COMMAND;
}
/* Error State */
else
{
/* Throw Error for Unable to Save */
perror("Unable to Save Command to History!");
}
從指針陣列中讀取數據。
if (strcmp(inputBuffer, "h") == 0 || strcmp(inputBuffer, "history") == 0)
{
int i = start;
while (i < size)
{
char *commandFromHistory = strdup(history[i]);
printf("%s\n", commandFromHistory); i++;
}
}
所以基本上,如果我跑我的殼和輸入ls,然後CAL,則h我將有H,H,H回來,而不是小時,CAL,LS。任何建議將不勝感激。
複製/粘貼錯誤使用
只是使用的strdup() :加入和閱讀完全一樣的程序。 –
固定。對不起,我錯過了。 – malibubts