• ベストアンサー

自作関数について

下記の時、関数copyを作成したいのですが、 関数copyにその都度、違う引数を渡たす為には どうしたら良いのでしょうか? 教えてください。 #include <stdio.h> void main() {      char a[20]={"ABCDEF"}; char b[20]; copy(a,b); printf("%s\n",b); copy(a,&a[3]); printf("%s\n",buf); copy(&b[2],dat[5]); printf("%s\n",dat); }

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

  • ベストアンサー
  • A__
  • ベストアンサー率47% (22/46)
回答No.2

#include <stdio.h> void cp(char *, char *); void main() { char a[20]={"ABCDEF"}; char b[20]="12"; char *dat="abcdefg"; cp(*&a,b); printf("%s\n",b); cp(*&a,&a[3]); printf("%s\n",a); cp(&b[2],&dat[5]); printf("%s\n",b); } void cp(char *aa, char *bb) { strcpy(aa,bb); } 結果 12 DEF 12fg

rewind
質問者

お礼

回答ありがとうございました。 参考ソースのみの記述でしたが、 大変良いヒントとなりました。

その他の回答 (2)

  • j_euro
  • ベストアンサー率25% (29/115)
回答No.3

可能性としては、これもありかな? #include <stdio.h> void main( int argc, char *argv[] ) { int count; char b[20]; for( count = 0; count < argc; count++ ){ printf( " argv[%d] %s\n", count, argv[count] ); } b[0] = '\0'; printf("kopi mae=(%s)\n",b); copy(argv[1],b); printf("kopi ato=(%s)\n",b); return; } #1の方がいうように、質問の情報が足りませんよ~ん。 OSとコンパイラ、どんなことをやりたいのか、あと、あなたのレベル・経験もあればグー etc..

rewind
質問者

お礼

回答ありがとうございました。 開発環境は、Win98・Visual Studio6.0です。 Cは、独学で約2ケ月です。 本当は、もっと長いプログラムを書いてたのですが、 回答者に見やすい様に短いコードを載せてみました。 勉強の為に何通りかの方法で作成し無事完成です。

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.1

質問の意味がよくわかりません。どのようなことをしたいのでしょうか? 1.乱数を生成して引数として渡したい stdlib.hのsrand(), rand()を使えばできます 2.引数の型が固定していない C++前提ですが、多重定義すればコンパイラがどの関数を呼ぶかを判断してくれます 3.引数の値が固定していないが、大丈夫なのか 大丈夫です # &a[3]はa+3と書くのが普通だと思います

rewind
質問者

お礼

回答ありがとうございました。 また、言葉足らずの質問ですみません。 関数COPYを多重定義せずに、 関数COPYにおいて実引数の受取方がわかりませんでした。 なので、関数COPYでの処理はなんでも良かったので略したのです。