お世話になります。
以下の演習問題が分からなかったため、質問させていただきます。
問題
テキストファイルのデータを表示する。
1行1024byte以内の動的メモリを確保。
行数は無制限である。難しい場合、行数は指定していい。
自分が考えた処理の流れとしては、
①ファイルオープン
②各データ配列分とデータ配列の要素分のメモリを確保
③fgetsでファイルから1行読み込み、メモリに格納
④fputsでメモリに格納されている文字を表示
⑤メモリ解放
難しかったため、今回行数は10行で指定しました。
行数を指定しないでメモリを確保するときの
ファイルの行数を知る方法を教えていただきたいです。
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_LINE 10 int main(void) { char **data; int i; FILE *in_fp; data = (char **)malloc(sizeof(char *) * MAX_LINE); //各データ配列を確保 for (i = 0; i < MAX_LINE; i++) { data[i]=(char *)malloc(sizeof(char) *1025); //要素分のメモリ確保 } in_fp = fopen("in_file.txt","r"); //ファイルオープン while(fgets(data,1024,in_fp)!=NULL){ //文字列を1行読み取る puts(data); } for (i = 0; i < MAX_LINE; i++){ //各データ配列のメモリを解放 free(data[i]); } free(data); //ポインタ配列datatのメモリを解放 return 0; }
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。