我对我的C编程有一点经验,而且我确信这是一件简单的事情,我稍后会自己开始,但我无法理解。我不想发布太多代码,但这里有相关内容:
#define MAX_COMMAND_ARGS 9
#define MAX_COMMAND_SIZE 80
typedef struct
{
int argc;
char* argv[MAX_COMMAND_ARGS + 1];
char* history[MAX_COMMAND_SIZE+1];
size_t size;
} Command;
void History(const Command* cmd)
{
for (size_t i = 0; i < cmd->size-1; ++i)
{
printf("%s\n", cmd->history[i]);
}
}
输入另一个函数中作为命令存在的这一行:
command->history[command->size] = command->argv[0];
++(*command).size;
我正在尝试实现一个简单的历史命令,但每次调用History函数时都会出现seg错误。任何帮助将不胜感激。
编辑:我修复了格式问题,我一直在搞乱printf线。这是我得到seg错误的那一行:
printf("%s\n", cmd->history[i]);
答案 0 :(得分:0)
分段错误通常是尝试访问CPU无法物理寻址的内存。
Avoid using uninitialized pointer.
使用malloc()或calloc()分配一些内存并将其分配给指针,然后为其赋值。
答案 1 :(得分:0)
一个非常可能的提示是你没有为历史表分配内存。
尝试使用strdup
函数插入历史记录条目,并且在从列表中删除条目后不要忘记调用free
。
如果这不是您的问题,您需要提供更多代码。