問題タブ [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.
c - 「副作用のある式」をgetcに渡すにはどうすればよいですか?
「UNIX 環境での高度なプログラミング、第 3 版」、151 ページ:
getc
との違いはfgetc
、マクロとして実装できるgetc
のに対し、 はマクロfgetc
として実装できないことです。これは、次の 3 つのことを意味します。
- への引数は、副作用のある式であって
getc
はなりません。fgetc
関数であることが保証されているため、そのアドレスを取得できます。これにより、 のアドレスをfgetc
引数として別の関数に渡すことができます。- 関数の呼び出しには通常より時間がかかるため、 への呼び出しは への呼び出し
fgetc
よりもおそらく時間がかかります。getc
ストリーム ポインターをパラメーターとして使用する関数シグネチャに対して、どのような「副作用のある式」が発生する可能性がありますか?
file-io - あるテキスト ファイルから別のテキスト ファイルへのデータの保存と転送
あるテキスト ファイルから別のテキスト ファイルにデータを転送する際に問題が発生する。私の考えは、キャラクターごとに転送することですが、うまくいかないようです。これらのコードを最初に追加しました
と
これらのコードのセットはスイッチ状態にあります
これらのファイル操作について学んだばかりで、何が悪かったのかよくわかりません
Address Book.txt ファイルを開くと、temporary.txt の最初の文字のみが表示されますが、連続して表示されます (終了することはありません)。
c++ - getc から過去の EOF を読み取るには?
暗号化中は問題なく動作しますが、復号化中は XOR 暗号化プログラムを作成しています。
char ca2=fgetc(f);
fgetc が EOF マークに達するとすぐに (暗号化されたファイルにはあらゆる種類の文字が含まれます)、ファイルの実際の終了前にスタックする可能性があります。次の文字の読み取りを停止します。
これは getc() の何らかの制限ですか? ここに私のゴミコードがあります
c - 私は気が狂っていますか、それとも C の設計に問題を見つけましたか?
fgetc() は unsigned char キャストを int に返し、EOF を ... EOF に返します。構成ファイルを char 配列に読み込もうとしていて、実装の char が署名されている場合はどうなりますか? C99 の標準では、表現できない値を符号付き変数に代入するように結果が実装定義されているだけでなく、代わりに実装が代わりにシグナルを発生させることを選択できると述べています。
6.3.1.3 符号付きおよび符号なし整数
整数型の値が _Bool 以外の別の整数型に変換される場合、その値が新しい型で表現できる場合、その値は変更されません。
それ以外の場合、新しい型が符号なしの場合は、値が新しい型の範囲内になるまで、新しい型で表現できる最大値よりも 1 多い値を繰り返し加算または減算して、値を変換します 49)。
それ以外の場合、新しい型は署名され、値を表現できません。結果が実装定義であるか、実装定義のシグナルが発生します。
このような構成は非常に一般的です。
char が符号付きで、c の値が表現できる値よりも大きい場合にキャストを実行することも実装定義です。
何千人ものプログラマーが何年にもわたって見逃してきた問題を、特に上記の構造が遍在していることから、私が発見した可能性は非常に低いと思います。
一部のバイトが signed char に収まらない値を持つ可能性があるため、この方法で読み取られた非テキスト コードが問題を引き起こす可能性があるようです。私は、実際にこの用途に対処する上記の構成の修正版を見たことがありません。
C 標準に関連する欠陥を実際に見つけたことがありますか、それとも他の何千人ものプログラマーがエラー チェックで実装していない、または実装に失敗したことに気づいたことがありますか?
c - C での行末後の読み取りに関する問題
そのため、ファイルからの読み取りに問題があります。
このファイルを読みたいです。
最初の 1 はプレイヤーで、配列はゲーム ボードです。
だから私はこのコードを使ってこれをすべて読もうとしています:
私の問題は、-16 や -38 のように、それぞれが Space と LF を参照するように、配列の外側に値を取得することがあるということです。したがって、私の質問は次のとおりです。これらの -16 および -38 に遭遇しないようにするにはどうすればよいですか?
どうもありがとうございました。英語の間違いについては事前に申し訳ありません
c - fgetc が無効な文字を取得する
私は、修正された Vigenére 暗号を使用する暗号化/復号化プログラムに取り組んでいます。つまり、5文字を暗号化/復号化した後、Vigenere正方形を切り替えます。テキストが短い場合はうまく機能しますが、テキストが長い場合、 fgetc() は無効な値を返し始めます。ファイルに実際に存在する値ではないかのように、復号化しようとしています。時々 -1 を返し始め、時には無効な文字だけを返します。テキストエディタでファイルをチェックすると、そこに何か他のものがあるという意味で無効です。コードを実行すると、ファイルは 2 つのデバッグ ファイルを作成し、1 つのファイルが出力したものと別のファイルが取得したものを比較できます。このブレークダウンは通常 250 文字以上で発生するようですが、まったく同じポイントでは発生しないようです。(私は300を超えるファイルを持っていましたが、それでも動作します)。
暗号化するコード:
復号化のコードは次のとおりです。
c - C-最初のコマンドライン引数の最初の文字に特定の文字が含まれているかどうかを確認する
最初の引数の最初の文字 == "-" の場合は、if ステートメントを入力します。私が得るエラーは、「 'strcmp'の引数1を渡すと、キャストなしで整数からポインターが作成されます」というものです.fgetcでこれを試してみましたが、少し違った書き方をしましたが、それでもこのエラーが発生します. キャストすると、コアダンプが発生します。引数にダッシュが含まれている場合、同じ引数内に数字が続くため、argv[1] を単一の文字として見ることはできません。条件が次のように単純である場合:if (strcmp(argv[1], "-")==0)
関数
ご協力ありがとうございました