アプリ版:「スタンプのみでお礼する」機能のリリースについて

ストリームの意味がいまいちよくわかりません?
C言語のデータがストレージに保存したあった場合、それをC言語で読み取る方法は
いくつあるのでしょうか?
 以上の基礎的なことが理解できなくて困っています。
 よろしくお願いいたします。

A 回答 (2件)

正確には#1のかたの回答になりますが、用途で考えた場合は、以下の3通りで十分かと思います。


(但し、特別な要件があれば話は別ですが)
1.とにかく、1バイトずつ読み込む場合:fgecを使用(データはバイナリファイルでもテキストファイルでもなんでもよい)
2.データをまとめて、nバイト単位で読み込む場合:freadを使用する(データはバイナリファイルの場合が多い。テキストファイルでも出来ないわけではないが、そのような使い方はあまりしない)
(nは読み込み側で1000とか10000とかそのときに最も最適と思われる値を指定する)
3.1行単位で読み込む場合:fgetsを使用(データがテキストファイルの場合のみ使用する。バイナリファイルでfgetsを使用することが出来ないわけではないが、使用する意味がない。)
但し、fgetsを使用する場合は、そのファイルの1行の最大のサイズより大きい読込領域を内部に確保しなければいけません。例えば、そのファイルに長さが1000バイトのデータが1行あり、ほかの行は全て100バイトだった場合、内部のデータ領域は1001バイト以上を確保しなければ、期待した結果は得られません。従って、読み込むファイルの1行の最大の長さが不明な場合は、十分に大きな読込領域を自分で考えて確保しておく必要があります。万が一、確保した読込領域の大きさが、足りなかった場合は、期待した結果が得られません。
以上。
    • good
    • 0

「C言語のデータ」が単独のファイルだとすれば、



* 低水準 API
ファイルを関数 open で開いて read / mmap で読み込んで close で閉じる

* 高水準 API
ファイルを関数 fopen で開いて fgetc / fgets / fscanf / fread で読み込んで fclose で閉じる
C++言語なら、クラス ifstream で開いて 演算子 >> で読み込む

* 標準ストリームを活用
ファイルを標準入力としてプログラムを実行し、関数 getchar / gets / scanf で読み込む
C++言語なら、大域変数 cin から 演算子 >> で読み込む
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!