• ベストアンサー

Visual C++の簡単なプログラムについて

Visual C++で以下のようなプログラムまたは関数を作りたいのでアルゴリズムもしくはヒントを教えてください。 (1) 入力された文字列の文字数を算出するプログラム (2) 『abc』→『abcabc』のように引数として受け取った文字列を2回繰り返した文字列に変換する関数

質問者が選んだベストアンサー

  • ベストアンサー
  • SHJYOR
  • ベストアンサー率35% (7/20)
回答No.5

(1) 入力された文字列の文字数を算出するプログラム strlen( str )ではだめなのですか? (2) 『abc』→『abcabc』のように引数として受け取った文字列を2回繰り返した文字列に変換する関数 strcat(strcpy(new_str, str), str)ではだめですか? そういうことではないのかなぁ? はずしていたらごめんなさい。

s-t-a-r
質問者

お礼

このような関数があることを知り、大変参考になりました!どうもありがとうございます。

その他の回答 (4)

回答No.4

> 文字列を1文字ずつ調べていって、NULL ('\0') を見つけたら > ループから抜けるようにするだけです。 '\0' と NULL は別物です。 '\0'は文字、 NULLはポインタ。混同せぬよう。

s-t-a-r
質問者

お礼

'\0' と NULL は別物なんですね!勉強になりました。ありがとうございます。

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.3

こんにちわ。 (1) 文字数のカウントプログラム   strlen 関数が使えますが、練習を兼ねて自作してみてはいかがでしょう?   文字列を先頭から1文字ずつ調べていって、NULL ('\0') を見つけた   時点でループから抜けるようにするだけです。 (2) 文字列を繰り返すプログラム   strcat で文字列を連結するか、sprintf(buff, "%s%s", str, str)   とするのが簡単です。

s-t-a-r
質問者

お礼

良きアドバイスありがとうございました!

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 (1) 文字数の算出は、strlen 関数が使えますが、練習も兼ねて自作しては   どうでしょう?   文字列を1文字ずつ調べていって、NULL ('\0') を見つけたら   ループから抜けるようにするだけです。 (2) str 引数で受け取ったとして、printf(%s%s\n", str, str);   とすれば目的の動きになると思います。

回答No.1

(1) 入力された文字列の文字数を算出するプログラム 文字列の先頭から'\0'が現れるまでの文字数を勘定します。文字列のお尻には'\0'がありますから。 (2) 『abc』→『abcabc』のように引数として受け取った文字列を2回繰り返した文字列に変換する関数 上の応用。お尻の'\0'が見つかれば、そこに繋げばいい。

s-t-a-r
質問者

お礼

なるほど'\0'に着目すればいいのですね。どうもありがとうございました。

関連するQ&A

専門家に質問してみよう