我的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故障? –