• ベストアンサー

strsetという関数

CかC++のプログラムで、文字配列をリセットしたいのでそういった関数を探してみました。 ネットで探したのですが、いくつかのサイトでstrsetという関数が紹介されていました。これは、strset(リセットしたい文字列,入れたい文字)という風に使うようです。 それで実際にソースに書いてコンパイルしたのですが、この関数は定義されてないらしく、認識してくれません。 (インクルードファイルは<stdio.h>,<stdlib.h>,<string.h>を使いました) 確かに聞いたことの無い関数だし、何冊かの本を見ましたがどこにもありません。 この関数はなにか特別な条件でないと使えないのでしょうか?? ちなみに、私がやろうとしたことは char moji[] = "aiueo"と、aiueoが入った文字列mojiの中身を、 strset(moji," ")として空白にしたかったのです。 strsetの他に、文字列の中身を好きな文字で埋められるような関数ってありませんか?ご存知の方、教えて下さい。

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

  • ベストアンサー
noname#30727
noname#30727
回答No.4

strset って DOS/Windows 系でしか使えないです。 あとは、strset(moji, " " → ' '); の間違いとか?

matuko
質問者

お礼

strsetはUNIX上じゃ動かないって事ですか…どうりで動かないはずです。 だからあまり文献に載ってないのでしょうか。 どうもありがとうございました。

その他の回答 (3)

noname#25358
noname#25358
回答No.3

 補足です。  通常は strcpy ですね。  使い方は、    strcpy( moji, " " );  です。

matuko
質問者

お礼

ありがとうございました。 strcpyを使うと簡単ですね… 参考になりました。

  • ---
  • ベストアンサー率50% (7/14)
回答No.2

#1の訂正と捕捉です。 最初のやつ char* p = moji; while (*p) { *p = ' '; p++; /* 追加 */ } 2番目。 mojiを'\0'で締めましょう。 例えば次のように。 int i, size; size = sizeof(moji); for (i = 0; i < size; i++) { moji[i] = ' '; } moji[size-1] = '\0'; 3番目。 2番目と同様。 memset(moji, ' ', sizeof(moji)-1); moji[sizeof(moji)-1] = '\0'; (memsetってWindowsではないかも?) 訂正だらけで申し訳ありません。

matuko
質問者

お礼

いろいろ考えてくださってありがとうございます。 参考になりました。 そういえばmemsetってありましたね。 C++だけの関数だと勝手に思ってて、Cでも使えるとは知りませんでした。 unix上で動かしてるのでmemsetを使ったらうまくいきました。

  • ---
  • ベストアンサー率50% (7/14)
回答No.1

char* p = moji; while (*p) { *p = ' '; } はどうでしょう? int i; for (i = 0; i < sizeof(moji); i++) { moji[i] = ' '; } でもいいかも。 あるいは memset(moji, ' ', sizeof(moji)); とか。

関連するQ&A