C原語の課題の質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ナオユキ

C原語の課題の質問です。

#1

投稿記事 by ナオユキ » 17年前

<結果例>

指定文字 ?a

文字列  ?abcabcabc

変換後文字列  \bc\bc\bc

変換文字数   3
 
のようになるはずなんですが、実行しても結果が得られません。
while文で友達が試したところ、上手くいったようです。
C原語は初心者なので、解説をいただけたらうれしいです。
よろしくおねがいします。

バグ

Re:C原語の課題の質問です。

#2

投稿記事 by バグ » 17年前

とりあえず、「原語」ではなくて「言語」です。

バグ

Re:C原語の課題の質問です。

#3

投稿記事 by バグ » 17年前

mojiがint型なのは何故ですか?

array

Re:C原語の課題の質問です。

#4

投稿記事 by array » 17年前

それと、私も1言。

>while文で友達が試したところ、上手くいったようです。

forでもできなくないですけど、文字列の長さが不確定なので、forよりwhileを使った方が良いという事だと思います。forはループする回数が決まっている時に使う事が多いいみたいです。それに対しwhileはループする回数が不確定の時に使用するみたいです。

管理人

Re:C原語の課題の質問です。

#5

投稿記事 by 管理人 » 17年前

scanf関数を使うとき、変換指定文字に対して何の型を使わないといけないか、
確認してみて下さい。
http://www9.plala.or.jp/sgwr-t/c/sec05.html

バグの原因は
恐らくcharを使わないといけないのにintを使っている為、intが4バイトだとすると、
初めの1バイトしか値が入っていないからじゃないでしょうか。
強引な話、mojiを0で初期化するか、グローバル変数にすればバグが直るかと。
すべきことはintをcharにすることですかね。

後、PFとか書いてあるのは、これは宿題のサンプルか何かですか?

box

Re:C原語の課題の質問です。

#6

投稿記事 by box » 17年前

> forよりwhileを使った方が良い

どちらがよい、ということはないです。
例えば、以下の2つの書き方は、「何かの文」に continue; が
なければ全く等価です。

1)for文の場合

for (A; B; C) {
    /* 何かの文 */
}

2)while文の場合

A;
while (B) {
    /* 何かの文 */
    C;
}

ナオユキ

Re:C言語の課題の質問です。

#7

投稿記事 by ナオユキ » 17年前

訂正しました。すいません。
みなさんの数々の解答を参考にもう一度やってみます。
ご協力ありがとうございました。

PFは#defineで定義したprintfです。
過去問題にでていたので、ちょっとやってみたくなりしてみました。

組木紙織

Re:C言語の課題の質問です。

#8

投稿記事 by 組木紙織 » 17年前

>PFは#defineで定義したprintfです。

ちょっとやってみるぐらいならいいと思いますが。
(使い方の練習にはなるので)

printf()などの関数名を#defineするべきではないと思います。
というより#defineは最小限にすべきであるとおもいます。
理由は#defineが単純な文字列置換であるので、無意味に使いすぎると
意図しない部分で置換される可能性が高くなるからです。

閉鎖

“C言語何でも質問掲示板” へ戻る