0
私はmalファイルを読み込むプログラムを作成しており、出力ファイルに出力することになっています。しかし、私が抱えている問題の1つは、最初のwhileループで、ファイルから各行のアドレスをlineRef [i]に格納するときです。whileループでは、すぐに印刷すると印刷されます正しい行。しかし、2回目のwhileループでは、ファイルの最後の行が表示されます。ここで文字添字ごとにファイルの最後の行を格納するポインタの配列
FILE * inputFile = fopen("example.mal", "r");
FILE * outputFile = fopen("output.lst", "w");
char linesFromFile[256];
char * lineRef[50];
char * labels[50];
int i = 0;
while(fgets(linesFromFile, 256, inputFile) != NULL)
{
lineRef[i] = linesFromFile;
i++;
}
i = 0;
while(lineRef[i] != NULL)
{
printf("%s\n", lineRef[i]);
i++;
}
return 0;
あなたは行ごとにメモリを割り当てることにより、何を意味するのですか?私はどのようにメモリを割り当てるのか知っていますが、私はどのように各行に割り当てるのか分かりません。 – Stuy
@Stuy例文 – Pras
'char * lineRef [50];を使って答えを更新しました。char [50個] *へのポインタの配列を作成します。ポインタは初期化されておらず、どこにも指していません。それらがどこか意味のある場所(行を保存できる場所)を指すようにするには、メモリブロックを割り当て、そのブロックの開始アドレスをポインタの1つに割り当てる必要があります。その行をそのメモリブロックにコピーします。あなたは各行ごとにそれを行います。 (ブロックしたら、各ブロックをフリーズする必要があります) –