• ベストアンサー

文字列

文字列をつかったプログラムの練習をしています。 friend fri end のように入力した文字列を半分ずつ表示するプログラムを作りたいんですけど 繰り返しやポインタを使わずに作ることはできますか?

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

char buf[80] = "friend"; char lead[80], tail[80]; int n = strlen(buf) / 2; strncpy (lead, buf, n); lead[n] = '\0'; strcpy (tail, &buf[n]); ---- 文字操作関数に渡すときにポインタ(アドレス)を渡すことになるので、厳密にポインタを排除して、ループ無しで作るのは無理だと思います。

tomo-nao
質問者

お礼

ありがとうございます!! やっぱ無理ですか・・・。わかりました(^-^) ポインタにはまだ慣れてないので、ポインタなしでできたらいいなと思ったのですが。やっぱりポインタって慣れると便利らしいのでがんばって勉強します!!

その他の回答 (1)

  • GOLDEN
  • ベストアンサー率46% (283/607)
回答No.1

strに入った文字列をstr1とstr2に分割するとしますね ------------------------------------------------------------ #include <string.h> (略) strncpy(str1,str,sizeof(str)/2); // strの先頭から半分をコピー str1[sizeof(str)/2] = '\0'; // str1の最後にNullを付加 strcpy(str2,str + (sizeof(str)/2)); // strの残りをコピー (略) ------------------------------------------------------------- でどうでしょう? 厳密にはポインタを使わず・・・ではないですけどね(^^;

tomo-nao
質問者

お礼

ありがとうございます!! あの・・・sizeofってなんですか? 私の持っている参考書に載ってなくて・・・は超ビギナー向けだから?!(>_<)

関連するQ&A