問題タブ [fgetc]

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.

0 投票する
4 に答える
306 参照

c - C の文字に関する問題

なぜこれはコンパイルされないのですか? エラーが表示されない

}

0 投票する
1 に答える
2823 参照

c - fgetc は EOF を識別しません

以下のプログラムは、さまざまな Solaris/Linux フレーバーで正常に動作しますが、AIX では動作しません。ただし、 AIXに置き換えるwhile(c!=EOF)と、完全に正常に動作します。while(c!=0xff)

何かご意見は?AIX の fgetc man ページを確認したところ、EOF 定数が返されるはずです。


0 投票する
5 に答える
12525 参照

c - 行を読み取るための C fgets と fgetc

長さについて仮定せずにテキスト行 (改行で終了) を読む必要があります。だから私は今可能性に直面しています:

  • fgets最後の文字が改行であるかどうかを毎回使用して確認し、継続的にバッファに追加します
  • バッファを使用してfgetc、場合によっては各文字を読み取るrealloc

直観は、fgetcバリアントの方が遅い可能性があることを示していますが、すべての文字を調べずにそれを行う方法がわかりませんfgets(また、私の直観は常にそれほど良いとは限りません)。ラインは非常に大きいため、パフォーマンスが重要です。

それぞれのアプローチの長所と短所を知りたいです。前もって感謝します。

0 投票する
2 に答える
218 参照

php - fopenはいくつかの奇妙な振る舞いをしました

denem.txtというファイルがあり、コンテンツがあります

モード'a+ b'でファイルを開くと、PHPはファイルの末尾へのポインターを配置することになっています。つまり、fgetc関数で文字を取得しようとすると、feofがtrueであるため、Falseが返されます。しかし、私が次のようなコードを使用すると

1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 789を取得します。-> rewind()を使用したことがなく、ポインタがファイルの最後にある必要があるため、これは奇妙なことです。つまり、fgetcはFalseを返す必要があります。ftellはint0を返します。これは、ポインタがファイルの先頭にあることを意味します。ただし、ポインタの現在の位置を使用するfwriteを使用してファイルに何かを書き込もうとすると、ftellが私たちに嘘をつかない場合は、ファイルの先頭に書き込むことになっています。しかし、fwriteを使用すると、何が起こるかを推測すると、ファイルの最後に書き込まれ、ファイルは次のようになります。

これについて何か考えがありますか?

0 投票する
3 に答える
3613 参照

php - fgetc ファイル ポインターを手動で次の行に移動します。

質問 1: fgetc ファイル ポインターを現在の場所から次の行に手動で移動するにはどうすればよいですか?

指定された数の区切り記号がカウントされるまで、データを 1 文字ずつ読み込んでいます。区切り文字のカウントが特定の数に達すると、新しい行 (レコード区切り文字) まで行の残りをコピーする必要があります。次に、次のレコードから再び文字ごとにコピーを開始する必要があります。

質問 2:ファイル ポインタを手動で次の行に移動することは正しい考えですか? 私は(「\ n」で)爆発するだけですが、「\ n」は常にレコード区切り文字であるとは限らないため、最初にパイプ区切り文字を数える必要があります。

これが私のコードです(レコードの最後の区切り文字「|」に到達するまで、すべてのデータを正しいレコードに入れます。次に、行の残りを次のレコードに入れます。正しく作成する方法がわからないためです)指定した数の | がカウントされた後、'\n' を探します):

サンプルデータ:

0 投票する
4 に答える
4991 参照

c - feof() および fgetc() での C セグメンテーション違反エラー

誰かが私のジレンマを解決するのを手伝ってくれますか? プログラムをコンパイルしても、エラーや警告は表示されません。ただし、実際に実行可能ファイルを実行すると、セグメンテーション エラーが発生します。私の理解が正しければ、これは要するにポインターが間違って使用されているために発生します。feof(srcIn) 行で特定のエラーが発生しましたが、その理由がわかりません。FILE* srcIn には、プログラムの先頭にある srcIn = fopen(argv[0], "r") 値以外の新しい値が割り当てられることはありません。私はもともとこのソリューションを C++ で実装していましたが、理由により C に変更する必要がありました。とにかく、C++ では、条件として srcIn.eof() を使用し、読み取りメソッドとして srcIn.get(something) を使用することを除いて、本質的にまったく同じことを行いました。問題なくコンパイルして実行できました。

編集:セグフォルトが発生したときに、実際にはメインにさえ入っていないことを忘れていました。これにより、実行可能ファイル自体に何らかの問題があると思われます。gdb は、セグメント障害が次の行で発生していることを教えてくれます: if(feof(srcIn)) 何かアイデアはありますか?

0 投票する
1 に答える
723 参照

c - C の UTF-32 から UTF-8 へのコンバーター、バッファーはヌル / ゼロでいっぱいです

私はこれを機能させるために永遠に努力してきました。プログラムは、バッファ サイズ用の on とファイル名用の 2 つの引数を取り、そのファイル形式を UTF-32 から UTF-8 に変換することになっています。fgetc() 関数を使用して、int 配列に Unicode コードポイントを入力しました。バッファの内容を出力する printint をテストしましたが、各コードポイントの代わりにこれらすべてのヌル文字が含まれています。

たとえば、文字「A」のみで構成されるファイルの場合: バッファ [0] は 0 バッファ [1] は 0 バッファ [2] は 0 バッファ [3] は 41

U+7F を超えるコードポイントは、最終的に分割されます。

バッファを初期化するためのコードは次のとおりです。

0 投票する
2 に答える
90 参照

c - これらの2つのメソッドが異なるものを返すのはなぜですか?

だから...私は自分のシンプルなキーロガーを作ろうとしていて、これはシェルで入力されたもので機能しますが、実行可能ファイルをダブルクリックすると、これらの多くがファイルに入れられます:ÿ

今のところ、入力するjと終了することを理解しています。これはデバッグ用です:


0 投票する
2 に答える
1377 参照

fgetc - fgetc を使用してファイルを読み取る

fgetc を使用して特定のファイル内の文字数をカウントする方法について質問があります。文字種を分けて数えないといけない時、どうやって使うの?たとえば、小文字のみの数、スペース、句読点などの数だけを数えたいですか?誰かが簡単な例を示すことができますか? ありがとうございました

できれば文字の総数をカウントするこのプログラムを実行しようとしましたが、個別の文字タイプの数をどのように絞り込むのですか? このプログラムが正しいかどうか正確にはわかりません

0 投票する
2 に答える
836 参照

c - sscanfを使用して名前を取得し、希望どおりに印刷するにはどうすればよいですか。

カンマで区切られたユーザーから名前を取得するプログラムを作成しています。このプログラムを使用すると、ユーザーはコンマの間に必要な数のスペースを入れることができます。したがって、たとえば:

私が次のようなものを入力する場合

また

印刷したい

私のプログラムは上記の例を適切に処理していませんが、問題はあります。入力が次のようなものであれば機能します

また

これが私のコードです:

sscanfを適切に使用していないためですか?