ページ 1 / 1
二次元配列の関数
Posted: 2007年4月26日(木) 21:36
by Sena
いつもお世話になっております。
質問なんですが、わかる方いましたらお願い致します。
二次元配列の関数なんですが、
このようなchar型に入力を数値入力をしたいのですが、
入力部分わ関数に分けて行い、入力した文字列をmain()
に戻して出力したいのですが、どのように文字列を引数として
渡せばいいでしょうか??
ポインターでアドレスを渡せばいいのでしょうか?
3日くらい悩んだのですが、苦戦しております。
わかる方お願い致します。
void main()
{
char c[5][10];
}
char input()
{
fgets()
return c;
}
Re:二次元配列の関数
Posted: 2007年4月27日(金) 14:30
by なぎ
結論だけ言えば、
void input(char c[/url][10])
{
// この中で、 c[/url][/url] を設定する
}
int main()
{
char c[5][10];
input(c);
}
で、引数は渡せます。
fgets() で文字列を受け取りたい(キーボードから?)であれば、
この場合は、
fgests(c, 10, stdin);
で、i 番目の配列に入力できるのではないかなと思います。
Re:二次元配列の関数
Posted: 2007年4月28日(土) 10:20
by 管理人
プログラムから拝見すると少しプログラムについて誤解されてらっしゃるようですので、
void main()
{
char c[5][10];
}
char input()
{
fgets()
return c;
}
ここですけど、引数としてもらった値をここで返せばmainに渡ると思っているのではないでしょうか?
アドレスを渡せば自作関数内で変更したデータはそのまま変更されます。
アドレスを渡さなければ自作関数内で変更したデータはmainで反映されません。
今回はアドレスを渡しているので、main内で変更が反映されますし、returnはなくてOKです。
void関数でいいでしょう。
(returnの意図していた事が違ったらすみません)
ちょっと関数の値受け渡し、関数の作り方、返り値の使い方、などを勉強してみてください。
Re:二次元配列の関数
Posted: 2007年4月29日(日) 21:09
by Sena
みなさんありがとうございます。
そうですよね、アドレスを渡せば良いのですね♪
ありがとうございます。
もし二次元配列をアドレスとして関数に渡しても、二次元配列の機能として
使えるのでしょうか??
または、特別な使い方があるのでしょうか??
Re:二次元配列の関数
Posted: 2007年4月29日(日) 22:47
by 管理人
ご質問の意味が少々わかりにくいのですが。。
えぇと、メイン関数の中で宣言したものは、自作関数にきちんと渡せばきちんと使用できますよ。
ポインタで渡せば値は変更できますし、アドレスを渡さなければただのコピーした値として扱われます。
一度こんなプログラムを書いてみてはいかがでしょうか?
#include<stdio.h>
int print(int a[3][3]){
int i,j;
//ここで色々2次元配列の中身を変更してみる
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",a[j]);
printf("\n\n");
return 33;
}
int main(){
int i,a[3][3]={{0,1,2},{3,4,5},{6,7,8}};
i = print(a);
printf("返って来た値は%d\n",i);
return 0;
}
とにかくなんとなくわかりにくいと思っていることがあればそれを解消すべく引っかかっている部分を何度もプログラム書いてみることです。
分割?えらー
Posted: 2007年5月26日(土) 16:57
by はぃさぃ
はじめまして、はぃさぃと申します。
シューティングゲームを作ってみようと
こちらを利用させていただいているのですが、
「6.先ほどのプログラムを分割する」の章にて
メイク時にエラーが起こってしまい悩んでいます。
.hとつけた2つのファイル(ExternGV.h、GlobalVariable.h)
をメイク時にみていないきがするのですが・・。
環境は、
BorlandC++ Compiler 5.5
BCC Developer
になります。
エラー文は、
Error: 外部シンボル '_img_sound_load' が未解決(C:\DOCUMENTS AND SETTINGS\はぃさぃ\MY DOCUMENTS\TEST\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_initialization' が未解決(C:\DOCUMENTS AND SETTINGS\はぃさぃ\MY DOCUMENTS\TEST\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_SetColor' が未解決(C:\DOCUMENTS AND SETTINGS\はぃさぃ\MY DOCUMENTS\TEST\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_Background' が未解決(C:\DOCUMENTS AND SETTINGS\はぃさぃ\MY DOCUMENTS\TEST\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_PlayerControl' が未解決(C:\DOCUMENTS AND SETTINGS\はぃさぃ\MY DOCUMENTS\TEST\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_Background2' が未解決(C:\DOCUMENTS AND SETTINGS\はぃさぃ\MY DOCUMENTS\TEST\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_FpsTimeFanction' が未解決(C:\DOCUMENTS AND SETTINGS\はぃさぃ\MY DOCUMENTS\TEST\DEBUG\MAIN.OBJ が参照)
** error 1 ** deleting Debug\test.exe
となっています。
プロジェクトツリーの画像も添付しておきます。
よろしくお願いいたします。
Re:分割?えらー
Posted: 2007年5月26日(土) 17:00
by box
とりあえず、
・main.cpp
・ExternGV.h
・GlobalVariable.h
の3つのファイルを見せてください。
Re:分割?えらー
Posted: 2007年5月26日(土) 17:23
by Justy
Re:分割?えらー
Posted: 2007年5月28日(月) 01:15
by はぃさぃ
返信ありがとうございました。
過去ログにも同じような質問があったんですね。
自分が探したときにはみつけられなかったです。。
それで、自分も同じような方法で修正して
動くようになりました。
大変助かりました、ありがとうございました。
Re:分割?えらー
Posted: 2007年5月28日(月) 01:43
by 管理人
過去の記事は「検索」である程度検索出来るのでよければ使ってください。
しかしなかなか過去の記事を全部調べてから投稿するのは大変ですよね。
特にこの検索システムは一度に全て検索することは出来ませんし・・・。