で区切られた正確に 2 行の入力ファイル (txt) があり\n
ます。
例えば:
FOO
BAR
ここで、最初の行 (この例では FOO) を achar **a
に、2 行目 (BAR) を に配置する必要がありchar **b
ます。
これを機能させる方法がわかりません。説明できますか?
動的割り当てを使用する場合は、char ポインターを使用して char のベクトルを割り当てる必要があります(char *, not char **)
。
#define MAX_CHAR 100
char *buffer = (char*) malloc (MAX_CHAR * sizeof(char));
次に、ストリームから文字を読み取り、それらを C 文字列としてバッファに格納するfgets関数を使用します。
FILE * pFile;
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL)
perror ("Error opening file");
else {
if(fgets (buffer, MAX_CHAR, pFile) != NULL)
puts (buffer);
}
fclose (pFile);
このようにして、最初の行をバッファに保存し、fgets を 2 回使用して、必要な場所に最初と 2 番目の行を保存します。非動的ベクトルも使用できます。
次のことを忘れないでください。
free(buffer);
私の意見では、char ** は必要ありません。なぜなら、すべてのテキストを含む char * バッファーがあり、strtokを使用して分割できるからです。
そこに2つのダブルポインターがある理由がわかりませんが、これは必要ではないと思います。
からファイルを読み取るには、.txt
と呼ばれるものが必要ですFILE
。これを使用してファイルを開きます。.txt
たとえば、次のように
なりますFILE *open = fopen("a.txt", "r");
。*open
はコードで (開かれたファイルとして) 使用される名前であり、a.txt
ここでは.txt
開きたいファイルを意味し、r
はモードです。この場合はread
であり、ファイルからデータを読み取るだけであることを意味します。
ファイルを開いた後、ファイルの終わりまで、ループを使用してデータを読み取ります(もちろんそうです)。ここでは、次のように記述された条件を取得しましたwhile(!feof(open))
。
ループを取得したら、データを読み取る必要があります。ファイルからデータを読み取るには、ファイルからデータを読み取る という関数が必要fscanf
です。次のように使用しますfscanf(open,"%s\n", temp[i]);
。whileopen
は以前に開いたファイルの名前で、に"%s\n"
到達するまで文字列を読み取りたいことを意味し、 データを格納する変数です。\n
temp[i]
データを取得したので、もう必要ありFILE
ません。を使用して閉じてfclose(open)
ください。
さて、私はあなたにそれを行う方法について説明したと思います.次はあなたがそれをコーディングする方法を見つける番です. )))
それでも混乱する場合は、検索してみてください。きっと参考になることがたくさんあると思います。
CMIIW :)