- ベストアンサー
文字列の読み込みに関して
C言語で、fgetsを使って文字列ファイルから読み込みを行うと、改行もしくは指定した文字列が来ると読み込みを、止めますが途中で改行が来ても読み飛ばして。(丸)までを読み込むようにするには、どのようなコードを書けばいいのですか? 別に使う関数は、これ以外でもいいのでコードを教えてもらえますか? お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> (丸)の次から再度読み始める必要があると、自前のバッファリングが複雑になるので... それは実装の問題ですわね。 要はなんらかの方法で '丸'を区切りとして切り出す ことができればいいのだから、メモリがふんだんに あるなら、テキスト丸ごとメモリに読み込み、 '丸'の位置で刻むのが一番簡単かと。
その他の回答 (3)
(丸)の次から再度読み始める必要があると、自前のバッファリングが複雑になるので、fgetc をループさせて、目的のバイト列を受け取った時点でループを抜けるようにするのが簡単ではないかと。
- A__
- ベストアンサー率47% (22/46)
#include <iostream.h> main(){ char buf[500] = "\0"; char *p; FILE *fp; fp = fopen("xx.txt", "r"); if (fp) { while (1) { if (!fgets(buf, 100, fp)) break; p = strstr(buf, "。"); if (p) { *(p+2) = 0; cout << buf; break; } cout << buf; } fclose(fp); } }
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
改行ごとに読み込まれる複数の文字列をどんどん繋いでいけばいいのでは? # で、'丸'が末尾にあればループを抜ける、と。 // コードは教えません。 do { 読む つなぐ } while ( '丸'がみつからない ); 文字列の結合には strcat が使えます。 # 使わなくてもできるけど。