プロが教えるわが家の防犯対策術!

今自分でC言語の勉強をしているのですが、解けないプログラムが本に載っていましたので教えてください。

#include<stdio.h>

struct DATE_DATA
{
int yy, mm, dd;
};

void sub1(struct DATE_DATA *data, int i);
void sub2(struct DATE_DATA *data, int i);

void main(void)
{
int i;
struct DATE_DATA data[5];

for(i = 0; i < 5; i++)
{
sub1(&data[i], i);
}
for(i = 0; i < 5; i++)
{
sub2(&data[i], i);
}
}                          
                         
void sub1(struct DATE_DATA *data, int i) /&data[i] ,iの
{                        アドレスを受け取る/
printf("%d回目\n", i + 1);
printf(" year = ");
printf("%d", &data->yy); /構造体ポインタ変数名->メンバ名
printf(" month = ");   なのにdataの前に&が付いている/
printf("%d", &data->mm);
printf(" day = ");
printf("%d", &data->dd);
}

void sub2(struct DATE_DATA *data, int i)
{
printf("%d回目 ", i + 1);
printf("%02d/", data->yy); /dataの前には&が付いていない/
printf("%02d/", data->mm);
printf("%02d\n", data->dd);
}

長くなりまして、すみません。質問がプログラムの中にあることも、すみません。
どうしても分からなくて回答をお願いします。

A 回答 (2件)

現在勉強中という事で,ヒントを



mainの中で,sub1とsub2を呼出していますが,引数の渡し方はどうしていますか?

又,sub1のprintf関数で表示されるのは何ですか?
sub2の表示内容は判りますよね?

この回答への補足

すみません!間違え箇所がありました。
#include<stdio.h>

struct DATE_DATA
{
int yy, mm, dd;
};

void sub1(struct DATE_DATA *data, int i);
void sub2(struct DATE_DATA *data, int i);

void main(void)
{
int i;
struct DATE_DATA data[5];

for(i = 0; i < 5; i++)
{
sub1(&data[i], i);
}
for(i = 0; i < 5; i++)
{
sub2(&data[i], i);
}                           
                         
void sub1(struct DATE_DATA *data, int i) /&data[i] ,iの
{                        アドレスを受け取る/
printf("%d回目\n", i + 1);
printf(" year = ");
scanf("%d", &data->yy); /構造体ポインタ変数名->メンバ名
printf(" month = ");   なのにdataの前に&が付いている/
scanf("%d", &data->mm);
printf(" day = ");
scanf("%d", &data->dd);
}

void sub2(struct DATE_DATA *data, int i)
{
printf("%d回目 ", i + 1);
printf("%02d/", data->yy); /dataの前には&が付いていない/
printf("%02d/", data->mm);
printf("%02d\n", data->dd);
}

sub1の部分を全てprintfにしていましたが、悩んでいたのはscanfの部分でした。
回答をおねがいします。間違えていてすみませんでした。

補足日時:2002/01/31 20:41
    • good
    • 0
この回答へのお礼

ヒントをいただき冷静に考えてみると、sub2を理解することができました。scanfはhitomuraさんに教えていただいたHPを見たり、本を片っ端から取り出して内容を把握することができそうです。本当にありがとうございました。今後も宜しくお願いします。

お礼日時:2002/02/01 00:53

(No.1のyo-kan-62さんの回答を見て)…そーか、勉強中ですよね。


では、関連サイトを挙げるだけにします。

scanf()の解説:
http://www.microsoft.com/japan/developer/library …

演算子の優先順位:
http://www.microsoft.com/japan/developer/library …
    • good
    • 0
この回答へのお礼

ありがとうございます。早速HPを見て、参考にします。
また質問を載せると思いますので、宜しくお願いします。

お礼日時:2002/02/01 00:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!