テキストファイルの1行を読み取り、それをバッファに保存し、udpソケットを介してバッファを送信してから、2行目を読み取ります..
これまで、テキストファイルから読み込むテキストのデータ型はわかっていたので、
fscanf()
テキストファイルから各行を読み取ります。しかし、今はデータ型がわからないので、この関数を使用することはできません。テキスト ファイルを 1 行ずつ読み取る他の方法はありますか。
注: 各行の長さは異なる場合があります。
テキストファイルの1行を読み取り、それをバッファに保存し、udpソケットを介してバッファを送信してから、2行目を読み取ります..
これまで、テキストファイルから読み込むテキストのデータ型はわかっていたので、
fscanf()
テキストファイルから各行を読み取ります。しかし、今はデータ型がわからないので、この関数を使用することはできません。テキスト ファイルを 1 行ずつ読み取る他の方法はありますか。
注: 各行の長さは異なる場合があります。
データ型を知らなければ、変数に何を読み込むのかを知ることはできません...見てみましょう、各行の長さは異なる場合があると言いましたよね?. したがって、テキスト ファイルには... テキストが含まれていると想定できます。つまり、数値 128 は 1 つの整数ではなく、読み取って整数に解析する 3 つの文字で表されます。
そうは言っても、そこには多くのオプションはありませんが、パーサーを作成する必要があります (各行を読み取り、読み取った文字に基づいてそれが何であるかを推測しようとします。たとえば、数字だけがありますか?、数字だけですが、ドット?文字は a から z だけですか?, 両方ですか?) 100% 信頼できるわけではないか、事前にデータ型を常に把握しようとするだけです (たとえば、データ型の各行から読み取った最初の文字を保存します)。ファイルの書き込み時)。
テキスト ファイルが実際にはテキスト形式ではなく、バイナリ モードである場合は、話が大きく異なります。だとしたら……まぁ、データ型を事前に知っておくしかないですね。
これは、データをバイナリとして読み取るために見つけた便利なコードです
FILE *fp;
fp=fopen("c:\\test.bin", "r");
char *x = new char[10];
//size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
fread(x, sizeof(x[0]), sizeof(x)/sizeof(x[0]), fp);