問題タブ [stdio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - fread.PNGファイルの最初の5バイトのみ
ゲームのリソースを1つのファイルにパックするためのシンプルなリソースパッカーを作成しました。私がアンパッカーを書き始めるまで、すべてが順調に進んでいました。パックした.txtファイル(26バイト)がリソースファイルから正常に出力され、問題なくすべてのデータが保持されていることに気付きました。ただし、リソースファイルにパックした.PNGファイルを読み取ると、最初の5バイトはそのままで、残りは完全に無効になりました。
これをパッキングプロセスまでたどると、freadが.PNGファイルの最初の5バイトしか読み取っていないことに気付き、その理由を一生理解できません。ファイルの長さがわずか5バイトであることを示す「EOF」もトリガーされますが、実際には、100ピクセル×100ピクセルの小さなポリゴンの787バイトのPNGです。
このPNGファイルをバッファに読み込むための別のアプリケーションを作成してこの問題をテストしたところ、同じ結果が得られ、5バイトしか読み取られませんでした。
その小さな個別のアプリケーションのコードは次のとおりです。
誰かが私の愚かな間違いを指摘してもらえますか?
c++ - C-printfおよびscanf-入力を終了するにはどうすればよいですか?
私はCで書かれた単純なアプリケーションに取り組んでいます。Unix環境で働いています。
私のアプリケーションはいくつかの単純なI/Oを実行しています。printfを使用してユーザーに入力を求め、scanfを使用してその入力を取得します。
問題は、値を入力した後、続行する準備ができていることをアプリケーションに伝える方法がわからないことです。'enter'と入力すると、意味のある改行'\n'が提供されます。Control-dは、scanfが私の入力をキャプチャすることを許可しますが、後続のscanf命令を無視しているようです。
誰かが私を助けることができますか?
c - Linuxでfgetsがより長いread()呼び出しを発行するようにする
を使用して、かなり大きな行 (最大 128K) のテキストを読んでいますfgets
。サーバーで過度のコンテキスト切り替えが発生しています。strace
次のように表示されます。
つまりfgets
、一度に 4096 バイトのチャンクを読み取ります。fgets
を呼び出すときに大きなチャンクがどのように使用されるかを制御する方法はありますread()
か?
java - System.out、stdout、および cout はまったく同じものですか?
System.out、stdout、および cout は、それぞれ Java、C、および C++ でまったく同じものですか?
同じものに 3 つの異なる名前があるのはなぜですか (特に、C、C++、および Java に多くの共通点がある場合)。
また、それらが何に使用されているかは知っていますが、ボンネットの下で正確に何を意味するのでしょうか?
c - Cの文字配列の最後の「単語」を読み取る方法に関するヒント
正しい方向に向けられることを探しているだけです:
Cプログラムへの標準入力があります。一度に各行を取り込み、char[]に格納しました。
char []ができたので、最後の単語(スペースで区切られていると仮定)を取得して小文字に変換するにはどうすればよいですか?
私はこれを試しましたが、プログラムがハングします:
提案されたものを取り入れてこれを思いついたのですが、これを行うためのより効率的な方法はありますか?
c++ - すべての部分文字列の出現箇所と場所を見つける
テキストファイルとして保存されたデータを解析するプログラムを書いています。私がやろうとしているのは、干し草の山にあるすべての針の位置を見つけることです. 私はすでにファイルを読み込んで出現回数を判断できますが、インデックスも探しています。
c - c言語でのwhileループ内のfscanfの問題
ファイルを1行ずつ読み取ろうとしていますが、無限ループが発生しています。どこが間違っているのでしょうか。
c++ - CでエレガントなバイナリI/O?
私は最近、C/C++ を使用して多くのバイナリ ファイルを読み込んでいますが、それがどれほど洗練されていないかに悩まされています。次のような多くのコードを取得します(その後、先に進みました):
または、ローカルのパック構造体を定義して、一定サイズのブロックを簡単に読み取れるようにします。ただし、このような単純な問題、つまり、指定されたファイルをメモリに読み込む場合は、より効率的に、より読みやすい方法で実行できるように思えます。ヒント/コツなどはありますか?これを処理するためのライブラリや何かを探しているわけではないことを明確にしたいと思います。自分のファイルを設計していて、ファイルの仕様を大幅に変更しなければならないとしたら、と思うかもしれませんが、今のところはスタイル上の答えを探しているだけです。
また、私はmmap
mmap が大好きです! 私はそれをよく使用しますが、問題は、標準入出力を使用する場合には実際には存在しない、整列されていないデータ型を処理するための厄介なコードにつながることです。最終的には、メモリから読み取るための stdio のようなラッパー関数を作成することになります。
ありがとう!
編集:ファイル形式を変更できないことも明確にする必要があります。読み取る必要があるバイナリ ファイルがあります。別の形式でデータを要求することはできません。
visual-c++ - ライブラリが指定されていませんが、printf は C++ プログラムにリンクされていますか?
次のコードがあります。
Windows 7 x86 で MSVC++ 10.0 を使用して、次のようにコマンド ラインでコンパイルします。
これにより simple.exe が生成され (コンパイラは自動的にリンカーを呼び出します)、実行可能ファイルは期待どおりに "hello world" メッセージを表示します。depends.exe を使用して実行可能ファイルを調べると、kernel32.dll が唯一の依存関係として表示されます。kernel32.dll ライブラリのコンテンツをダンプすると、printf が表示されません。
VC++ はある種の最適化を採用しているので、printf は最終的な実行可能ファイルに何らかの方法で直接含まれていますか? もしそうなら、どのように、そしてそれはどこかに文書化されていますか?
c++ - C stdio ライブラリと比較して、C++ iostream は何を提供する必要がありますか?
重複の可能性:
C++ コードで使用している I/O ライブラリはどれですか?
別の質問へのコメントでこの質問をしたところ、代わりに適切な質問にするように求められました。
stdio の代わりに iostream を使用したいのはなぜですか? より具体的には、std::getline は C の同等物よりも何を提供する必要があるのでしょうか?
言語バッシングはやめてください。