我的C编程经验有点不足,我确信这件事很简单,以后我会踢自己,但我无法弄清楚。我不想发表太多的代码,但这里是什么是相关的: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;
我想实现一个简单的历史命令,但每次我调用历史记录功能时都会收到一个seg故障。任何帮助,将不胜感激。
编辑:我修复了格式问题,我一直在搞printf行。这是我得到seg故障的线路:
printf("%s\n", cmd->history[i]);
那么,你不告诉我们什么行抛出异常,也没有显示任何调用History()的代码。你很可能有一个空指针或缓冲区溢出。这就是调试器存在的原因。精益如何使用它。这将是你最好的朋友。此外,您正尝试在printf中打印两个字符串,并且只有一个参数。可能是问题。 – OldProgrammer
用'-Wall'编译你的软件并阅读警告。 –
您是否在第一次迭代中收到seg故障? –