問題タブ [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は読みやすさを悪く教えていますか?
C(まだ学んでいる)を見てからしばらく経ち、K&Rの本に戻ったところです。
演習5-3(p107)に進んだところです。
第2章で示した関数strcatのポインターバージョンを記述します。strcat(s、t)は文字列tをsの末尾にコピーします。
私はこれを思いついた...
うまくいくようです。
私が不思議に思っているのは、K&Rの本は、できるだけ少ない行で演習を書くことが多いということです-上記の独自のコードサンプルが提供されていれば、次のようなものが得られると思います...
私にとって、これは読みにくいです(この例はあまり良くないかもしれませんが、私はしばしば彼らのコードを見て、それが数行に分かれていれば、はるかによく理解できると思います)。この本で提供されている例は、ループの条件部分でこの種の割り当てを推奨しているようであり、実際には、行ごとに可能な限り多くのコードを詰め込んでいます。
たとえ読みやすさが損なわれたとしても、この本はできる限りできる限りのことをしようとしているのでしょうか。
これはただのCウェイですか?
c - C では、いつ文字列の終わりに達したかを知る方法があります。逆方向に反復するときに開始を知る方法はありますか?
K&R演習 5-4 (p107) を行っています。
関数 strend(s,t) を記述します。これは、文字列 t が文字列 s の末尾にある場合は 1 を返し、それ以外の場合は 0 を返します。
これを行うための最良の方法は...
- 両方のポインタを最後までインクリメントする
- 各文字が一致する間、両方の文字列を逆方向にカウントします
- 2 番目の文字列の先頭まで数え終わったら 1 を返す
だからここに私が持っているものがあります...
ご覧のとおり、カウンターを使用して、2 番目の文字列の先頭にいつ到達したかを示しました。
\0
文字列の先頭にいつ到達したかを知るためにカウンターなしで使用できる他のループはありますか (文字列の末尾を探すのと同様です)。
ありがとう。
アップデート
ポインターを使用することを考えていませんでした - 私はまだ学んでいて、いくつかのことを忘れています!
私はこれを思いつきました...
c - シンプルなCプログラム
このプログラムは、入出力セクションのK&Rのプログラムに基づいています。
コンパイルは問題ありません。しかし、実行しようとすると、どの入力からも出力は「-NAN」であり、おそらく数値ではありません。理由はわかりません。何かアドバイスをいただければ幸いです。
c - カーニハンとリッチーの問題1-17のPrintf問題
以下のコード(KernighanとRitchieによる「Cプログラミング言語」の問題1-17の場合)では、なぜ最長の行(下部)が印刷されないのですか?
c - 単語の長さのヒストグラムはヒントを行使しますか?
私は「Cプログラミング言語」の本でCを学んでおり、演習1.13を解こうとしています。
「入力された単語の長さのヒストグラムを印刷するプログラムを作成します。棒を水平にした状態でヒストグラムを描くのは簡単です。垂直方向の方が難しいです。」
コードを書きましたが、CTRL + Z(ファイルの終わり)を押すと、単語の長さではなくすべてゼロが表示されます。
誰かが私がどこで間違っているのかについてのヒントを教えてもらえますか?
c - K&R - 英字の数値ソート?
オプション-nを使用した K&R 5-14 のように、アルファ文字を辞書式ではなく数値的に並べ替えるとはどういう意味ですか?
c - K&R課題演習5.17
演習 5.17 で具体的に何をする必要があるのか、そのフィールド内で並べ替えるとはどういう意味なのか説明してもらえますか?
c - K&R にある C の質問でのバイナリ ツリーの実装
K&R C の本を読んでいて、質問があります。140 ~ 141 ページの構造体に関する第 6 章に、次のようなコードがあります (関連のない部分をいくつか削除しました)。
そして、私の混乱は root = addNode(root, word) の main() 関数にあります
addNode が新しく追加されたノード (または、既にツリー内にある場合は単語が存在するノード) へのポインターを返す場合、ツリーの上のすべてのデータが「失われる」のではないでしょうか? ルートはツリーのルートのままであるべきではありませんか?
ありがとう!
c - printf をよりよく理解する - 指定された値が負の場合、「%c」で何を出力しますか?
Kernighan & Ritchie では、「符号付きまたは符号なしの char データ型がマシンに依存する場合、すべての印刷可能な文字は正である」と述べています。
誰かがこの行の意味を説明できますか? 私のシステムは文字に署名しましたが、-90 などの負の値を使用しても、printf は文字を出力します (あまりなじみのある文字ではありません)。
c - K&R演習1-20-説明が必要
次の演習で何が求められているのか完全には理解していません。
「入力内のタブを適切な数のブランクに置き換えて、次のタブストップまでスペースを空けるプログラムdetabを記述します。タブストップの固定セット、たとえばn列ごとを想定します。nは変数またはシンボリックパラメーターである必要がありますか?」
誰かが太字の部分を明確にできますか?