私はcプログラムが1行ずつテキストファイルを読み込み、その行を端末にプリントアウトさせたいと思っています。Cプログラムは、テキストファイルを1行ずつ読み込み、それらの行を端末に出力します。
私のコード
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char* line;
FILE *ifp;
ifp = fopen("BBE.txt", "r");
if (ifp == NULL)
{
printf("Error opening file!\n");
exit(1);
}
while (fscanf(ifp, "%s", line) == 1)
{
printf("%s\n", line);
}
fclose(ifp);
return 0;
}
私は端末に何をプリントアウトしていない、それを実行しようとするプログラム。これは、whileループは機能していないが、私は理由については確信していないと伝えています。
あなたは、*それを初期化せずに任意のメモリ*の代わりに*を割り当てることなく*ありません意味ですか? –
@KenWhiteそれは '* line'ポインタが初期化されていないためです。 unitialised変数を使用するのはUBです。つまり、使用前に初期化する必要があります。つまり、有効な場所を指し示す必要があります。有効な場所を最初に割り当てる必要があります。 – artm
OK。したがって、NULLに初期化するとうまくいくことをこのポスターに伝えていますか?この場合、変数はメモリ割り当てで初期化する必要があり、その使用にはメモリを最初に割り当てる必要があります。 –