我正在制作自己的命令提示符(学校项目),并试图跟踪用户使用的最后10条命令。所以我有一个数组:
char* history[10];
根据我的理解,这意味着我有一个指向字符串的指针数组。我的这个问题是我有另一个变量,输入即用户输入。但是,只要用户输入新内容,输入值就会更改,这意味着数组中的所有字符串都将更改为用户的新输入。
我想知道如何解决这个问题?
我尝试将数组更改为以下内容:
char *history[10][MAX] //Where MAX = 256
我可以改用strcpy,但无法弄清楚如何将数组数组输入到方法中,然后使用strcpy将字符串复制到数组数组中。
这是我目前的方法:
char* updateHistory(char *history[], char command[], int histIndex) {
history[histIndex] = command;
return *history;
}
任何其他解决方案的帮助或如何使我的解决方案正常工作?
表示数组中的所有字符串都更改为用户的新输入。
发生这种情况可能是因为,您有一个command
引用内部updateHistory
函数的变量。因此,无论何时在updateHistory
函数的第一行进行赋值,指针数组中的所有指针都指向相同的内存位置- command
。
要解决此问题,您需要像这样分配指针数组(例如,您可以在函数外部执行此操作):
char *history[10];
for ( i=0; i < 10; i++ )
{
history[i] = malloc(MAXLEN);
}
然后复制字符串(这可以放入函数中):
strcpy(history[i], command);
最后,不要忘记free
数组中的每个变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句