誰かが助けてくれることを願っています。私はこのプログラムを完全に実行し、数行のコードをある関数から別の関数に移動しましたが、すべてがバラバラになりました。
関数の先頭から segfault までのスニペットを以下に含めました。「私たちはここに着きましたか?」と喜んで出力します。しかし、次のステートメントではありません。これを理解するのに非常に多くの時間を費やしたので、最初に作成しなければならなかった作業ビルドを思い出せません
それ(少なくとも以下のセクション)は、テキストファイル全体を文字列にコピーすることになっています
この話の教訓: 動作するコードは「正しい」コードよりも優れています。微調整を試みる前に、常に動作するコードをコピーしてください。
void validateFile(FILE* file, char** menuStore, char** submenuStore)
{
char* temp = NULL;
size_t size;
boolean flag = true;
char first;
/*Loop Counter*/
int i;
fseek(file, 0, SEEK_END);
size = ftell(file) * sizeof(char);
fseek(file, 0, SEEK_SET);
if ((temp = malloc(size)) == NULL)
{
printf("\nUnable to allocate Memory, Program exiting");
exit(EXIT_FAILURE);
} else
{
for (i = 0; i < (size / sizeof(char)); i++)
{
temp[i] = fgetc(file);
}
printf("\n did we get here?");
printf("\nFile loaded, validating...");