- ベストアンサー
Visual C++の簡単なプログラムについて
Visual C++で以下のようなプログラムまたは関数を作りたいのでアルゴリズムもしくはヒントを教えてください。 (1) 入力された文字列の文字数を算出するプログラム (2) 『abc』→『abcabc』のように引数として受け取った文字列を2回繰り返した文字列に変換する関数
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
(1) 入力された文字列の文字数を算出するプログラム strlen( str )ではだめなのですか? (2) 『abc』→『abcabc』のように引数として受け取った文字列を2回繰り返した文字列に変換する関数 strcat(strcpy(new_str, str), str)ではだめですか? そういうことではないのかなぁ? はずしていたらごめんなさい。
その他の回答 (4)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> 文字列を1文字ずつ調べていって、NULL ('\0') を見つけたら > ループから抜けるようにするだけです。 '\0' と NULL は別物です。 '\0'は文字、 NULLはポインタ。混同せぬよう。
お礼
'\0' と NULL は別物なんですね!勉強になりました。ありがとうございます。
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 (1) 文字数のカウントプログラム strlen 関数が使えますが、練習を兼ねて自作してみてはいかがでしょう? 文字列を先頭から1文字ずつ調べていって、NULL ('\0') を見つけた 時点でループから抜けるようにするだけです。 (2) 文字列を繰り返すプログラム strcat で文字列を連結するか、sprintf(buff, "%s%s", str, str) とするのが簡単です。
お礼
良きアドバイスありがとうございました!
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 (1) 文字数の算出は、strlen 関数が使えますが、練習も兼ねて自作しては どうでしょう? 文字列を1文字ずつ調べていって、NULL ('\0') を見つけたら ループから抜けるようにするだけです。 (2) str 引数で受け取ったとして、printf(%s%s\n", str, str); とすれば目的の動きになると思います。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
(1) 入力された文字列の文字数を算出するプログラム 文字列の先頭から'\0'が現れるまでの文字数を勘定します。文字列のお尻には'\0'がありますから。 (2) 『abc』→『abcabc』のように引数として受け取った文字列を2回繰り返した文字列に変換する関数 上の応用。お尻の'\0'が見つかれば、そこに繋げばいい。
お礼
なるほど'\0'に着目すればいいのですね。どうもありがとうございました。
お礼
このような関数があることを知り、大変参考になりました!どうもありがとうございます。