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;の動作を演出してくれたお陰で完成に漕ぎ着けた? と思いたい。

 

 取り合えず、第一回目はこんな所で終わりたい。

 第二回目の題目は決まってないので隔日更新です。そもそも二回目があるかどうかも怪しいですがね。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちCカテゴリに属しているものが含まれています。

次のカテゴリはFedora奮闘記です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。