Cの最近のブログ記事
まぁ、part3と言いつつ覚書だけど。
gets関数とfgets関数について。
基本的にはfgets関数を使うらしい。 最大文字列指定が出来る事が重要なんだとか。 そういう意味で、scanf関数も嫌われているらしい。
でも、strcat関数使う時、文字列の入力を求める場合、fgets関数だと思うように結果が揮わない。 具体的には、文字列が改行されて出力されてしまうのだが。
これは、gets関数やscanf関数が末尾の改行記号をヌルに置き換ているのに対し、fgets関数は改行記号の後にヌルが来るからだとか。
そーなると、strcat使う場合の入力関数は一体何を使えばいいのかなーとか悩んでおります。
入力系の関数はまだまだあるみたいだし、色々使っているうちに出てくるんだろーとは思っとりますが。
今回は以上。
実際にたいしたプログラムは書いてないから仕方ない。 今回は繋ぎみたいなもの。
覚えたことは、配列は楽じゃー位。
ポインタ相変わらず難しいし、構造体もイミフに近いし。
どーなのよ、俺。
何ヶ月ぶりかの更新。
ちょこちょことやってはいたんだがねー。
見てもらえれば判ると思うが、n=30までのフィボナッチ数列の表示プログラムです。
滑稽者氏から渡されたサンプル見たらまんまで笑った(笑)
でも一応自分で構築したんだぜっ。
再帰呼び出しについてちょこっと。
fibn関数内で定義しているint nは、main関数の中にあるint nと同一のものではないのです。(わかってる人は判ってるとは思うが)
両者共にローカル変数だから、関数内が適用範囲(スコープとか言う)なので別の文字列でも問題なし。
だから、
でもおk。(fibn関数を抜き出しただけ、これだけじゃ動かないよ)
実際に置き換えれば問題なく動きます。
次回更新日はまた不明(笑)
入り口、Hello Worldは随分前に作ったから、今回はスルー。
以前躓いた、2~n(0,1は素数ではないため除外)までの素数判定プログラムを製作してみた。
100までの数が素数であることは確認。
滑稽者氏にはcount?使えとか言われたけれど、何とか条件分岐のみで実現してみせた。力技感が抜けないのが傷だが、アルゴリズムらしいアルゴリズムを組めたから由としよう。
ところで、プログラムを組んでて気づいた事がある。
if文は、{}で囲む場合と、囲まない場合があり、前者の場合{~}までの内容を実行し、後者は次の一文(このプログラムの場合ならば15行目のifにより分岐する16行目のcontinue;と、17行目のifにより分岐する18行目のprintf("%d,", b);)を実行する。
俺は今まで、後者の場合も前者と同様に、一文以上を指定できるのかと勘違いしていたが、次の;までしか実行されないんですね、これが。
実はこのプログラム、意図した結果ではありません。
17行目のifの分岐に、19行目まで掛かると誤認してました。
実際に動けば、素数判定なぞ何のその、ただnまでの数を羅列するプログラムと成り果てる所でした。
もしそんな事になっていたら、また投げましたね、ええ。
しかし、結果はbreak;が旨い具合に動作してくれたお陰で完成したりしてます、正に棚から牡丹餅。
いや、記述した本人が言うのもなんだが、奇蹟ですね、ええ。
15行目とbreak;がいい感じにif( b % c == 0) break;の動作を演出してくれたお陰で完成に漕ぎ着けた? と思いたい。
取り合えず、第一回目はこんな所で終わりたい。
第二回目の題目は決まってないので隔日更新です。そもそも二回目があるかどうかも怪しいですがね。
