我想做的是在我的 shell 程序中开发一个历史命令。因此,每当用户写入历史记录时,最后输入的 10 个命令都会显示在屏幕上
这是我的一段代码..
int i;
char cmd[4096];
int cmdHisC =0;
char *cmdHistory;
char *cmdsHistory[10];
while(1) {
/*** Read input from shell ***/
fgets(cmd,4096,stdin);
if(strcmp(cmd,"") != 0)
{
if((cmdHistory= strdup(cmd)) != NULL)
{
if (cmdsHistory[cmdHisC] != NULL)
free(cmdsHistory[cmdHisC]);
cmdsHistory[cmdHisC] = cmdHistory;
cmdHisC++;
}
else
fprintf(stderr, "Error, Cannot save this command in the history pointer: Out of memory\n");
if(cmdHisC>9)
cmdHisC=0;
}
打印历史我的意思是 cmdsHistory,这是代码:
if(strcmp(argsCmd[0], "history")==0)
{
for(int n = 0; n<10 ; n++)
{
if(cmdsHistory[n] != NULL)
printf("History command %d: %s\n", n, cmdsHistory[n]);
}
}
然后,每当用户写入历史记录时,我都会遍历 cmdsHistory 并打印结果。
我无法将 *cmdHistory(用户输入的设置命令)放入 **cmdsHistory 数组的问题。
请问有什么帮助吗?