- ベストアンサー
strsetという関数
CかC++のプログラムで、文字配列をリセットしたいのでそういった関数を探してみました。 ネットで探したのですが、いくつかのサイトでstrsetという関数が紹介されていました。これは、strset(リセットしたい文字列,入れたい文字)という風に使うようです。 それで実際にソースに書いてコンパイルしたのですが、この関数は定義されてないらしく、認識してくれません。 (インクルードファイルは<stdio.h>,<stdlib.h>,<string.h>を使いました) 確かに聞いたことの無い関数だし、何冊かの本を見ましたがどこにもありません。 この関数はなにか特別な条件でないと使えないのでしょうか?? ちなみに、私がやろうとしたことは char moji[] = "aiueo"と、aiueoが入った文字列mojiの中身を、 strset(moji," ")として空白にしたかったのです。 strsetの他に、文字列の中身を好きな文字で埋められるような関数ってありませんか?ご存知の方、教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
strset って DOS/Windows 系でしか使えないです。 あとは、strset(moji, " " → ' '); の間違いとか?
その他の回答 (3)
補足です。 通常は strcpy ですね。 使い方は、 strcpy( moji, " " ); です。
お礼
ありがとうございました。 strcpyを使うと簡単ですね… 参考になりました。
- ---
- ベストアンサー率50% (7/14)
#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ではないかも?) 訂正だらけで申し訳ありません。
お礼
いろいろ考えてくださってありがとうございます。 参考になりました。 そういえばmemsetってありましたね。 C++だけの関数だと勝手に思ってて、Cでも使えるとは知りませんでした。 unix上で動かしてるのでmemsetを使ったらうまくいきました。
- ---
- ベストアンサー率50% (7/14)
char* p = moji; while (*p) { *p = ' '; } はどうでしょう? int i; for (i = 0; i < sizeof(moji); i++) { moji[i] = ' '; } でもいいかも。 あるいは memset(moji, ' ', sizeof(moji)); とか。
お礼
strsetはUNIX上じゃ動かないって事ですか…どうりで動かないはずです。 だからあまり文献に載ってないのでしょうか。 どうもありがとうございました。