問題タブ [kernighan-and-ritchie]
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 - K&R 演習 1.5.2 に困惑
私は現在、K&R を使用して C を学ぼうとしていますが、例 1.5.2 で完全に困惑しています。何らかの理由で、印刷する代わりに Ctrl-Z を押すと、2 を掛けnc
て印刷nc
されます。何がこの問題を引き起こしているのかわかりません (本にあるとおりにコードを正確にコピーしました)。私が使用しているコンパイラは Visual Studio 2010 です。コードは次のとおりです。
c - K&R 演習 1-22 の解答の何が問題になっていますか?
The C Programming Language の演習 1-22 は次のとおりです。
入力のn番目の列の前にある最後の非ブランク文字の後で、長い入力行を 2 行以上の短い行に「折りたたむ」プログラムを作成してください。プログラムが非常に長い行で適切な処理を行っていること、および指定された列の前に空白やタブがないことを確認してください。
これはコードです:
これは私が使用しているサンプル入力です:
そして、これは私が得る出力です:
ここのバグは何ですか?私は本当に手がかりがありません。
c - 直接計算を使用して浮動小数点型の範囲を決定するにはどうすればよいですか?
「TheCProgrammingLanguage」第2版の演習2-1を解こうとしています。
「標準ヘッダーから適切な値を出力し、直接計算することにより、符号付きと符号なしの両方のchar、short、int、およびlong変数の範囲を決定するプログラムを作成します。それらを計算する場合は困難です。さまざまな浮動小数点の範囲を決定します。ポイントタイプ。」
標準ヘッダーの最小値と最大値を使用することと、直接計算することの両方によって、浮動小数点を除くすべてのタイプの範囲を決定することができました。
直接計算を使用して浮動小数点型の範囲を決定するにはどうすればよいですか?
c - 「C プログラミング言語」の非常に基本的なサンプル コードが期待どおりに動作しませんか?
私は中程度の経験を持つ Java 開発者であり、コンピューター サイエンスの研究のために C 言語を学習する際に多くの問題を抱えています。多くの人が推奨しているように見える本「The C Programming Language」で試してみます。
しかし、getchar() と組み合わせた EOF のような最も単純なものには問題があります。コードは次のとおりです。
私は Mac OS X Lion で作業しており、本で説明されているように、ターミナルで実行するために「./a.out」を指定して「cc」コマンドを使用してファイルを実行します。そして、私が得るものは次のとおりです。
- いつも一文字数えすぎ
- while ループが終わらない! 入力の終わりに達した後、別の入力を待つだけです...
何が問題なのか、まったくわかりません。誰か助けてくれませんか?
function - GCC ソースのターゲット固有の関数宣言で、プロトタイプではなく K&R スタイルが使用されるのはなぜですか?
私は GCC ソース コードを調べていて、ほとんどの (すべてではないにしても) ターゲット固有のソース コード ファイル (たとえば arm.c など) が古い K&R 関数スタイルを使用していることに気付きました。
これには何か特別な理由がありますか?後方互換性? 携帯性?
c - このサンプル C コードについて説明してください
このコードは K&R からのものです。何度も読んでいますが、まだ理解できていないようです。
K&R によると、これら 2 つの関数の目的は、プログラムが大量の入力を読み取らないようにすることです。つまり、このコードがないと、関数は、最初に読みすぎない限り、十分なデータを読み込んだかどうかを判断できない可能性があります。しかし、私はそれがどのように機能するのか理解していません。
たとえば、getch() について考えてみましょう。私が見る限り、これはそれが取るステップです:
- bufp が 0 より大きいかどうかを確認します。
- その場合、buf[--bufp] の char 値を返します。
- それ以外の場合は getchar() を返します。
より具体的な質問をしたいのですが、このコードが意図したことをどのように達成するのか文字通りわからないので、私の質問は次のとおりです:(a)目的と(b)このコードの理由は何ですか?
前もって感謝します。
注: K&R ファンの場合、このコードは 79 ページにあります (エディションによって異なります)。
c - 「The C Programming Language 2nd Edition」のこのコードにはバグが含まれていますか?
このコードは、C プログラミング言語第 2 版 7.3 可変長引数リストからのものです。
通常、このプログラムは aaaaaaa を出力して停止するはずですが、代わりに aaaaaaa dddd を出力します。 http://ideone.com/d3Akk
それは本当にバグですか?
ありがとうございました。
c - K&R2の第1章の最長行の例をコンパイルすると、「getlineのタイプが競合する」というエラーが発生するのはなぜですか?
これは、「Cプログラミング言語」のセクション1.9から直接実行しようとしているプログラムです。
Ubuntu11.10を使用してプログラムをコンパイルしようとするとエラーが発生します。
本の印刷に問題がないことを確認するために、この本の章の裏側の演習の回答セットを参照しました(http://users.powernet.co.uk/eton/kandr2/krx1)。 html)と、そのリンクから演習18、19、20、21などを実行しようとすると、同様のエラーが発生します。プログラムを実行して出力を確認できない場合、学習するのは非常に困難です。この問題は、1つのプログラムに文字配列と関数呼び出しを導入したときに始まりました。この問題についてアドバイスをいただければ幸いです。
c - 構造体へのポインタを返す
Kernighan&Ritchieによる「Cプログラミング言語」で構造体を返す例に出くわしました。
関数が関数内のローカル変数へのポインタを返しているようです。これは、ダングリングポインタを返す場合ではないでしょうか。
c - 関数がソース ファイルの先頭付近で宣言されているのはなぜですか?
K&Rを通してプログラミングを学んでいます。ここまでは順調ですが、セクション 1.8 (関数) のコード行の役割については不明です。
セクション 1.8 で、著者はある整数を別の整数で累乗する関数を作成する方法を示します。
本に書かれていたので、以下にコードを貼り付けました。すべて正常に出力されます。しかし、なぜ彼らがこの行を一番上に含めたのかわかりません:
この本では、プログラムが整数 m を n 乗すると述べていることを除けば、それについては触れていません。コードから行を削除しても、プログラムは正常に出力されます。
これを正しく理解していれば、行
関数を作成し、その下の中括弧で関数を定義します。次に、main の下の中かっこが関数を呼び出してチャートを出力します。
だから、それはすべて理にかなっているようです。しかし、一番上の行が何をするのかわかりません。
無関係かもしれませんが、何かが欠けている可能性がはるかに高いようです。なぜその行があるのか、誰かが私に教えてくれますか?