0

こんにちは友人私は新しく、構造を学ぼうとしています...ここで構造計算で構造日付を宣言しました...しかし、日付から要素にアクセスする方法についてのアイデアが得られません。親構造 calc に malloc を使用してメモリを予約しました。日付構造にも十分でしょうか? .ガイドしてください...ありがとう!

#include <stdio.h>
#include <stdlib.h>

struct date{
   int day;
   int month;
   int year;
};

struct calc{
   int row;
   int col;
   char menu_name[20];
   char sub_menu_name[20];
   struct date dob;
};

int main()
{
    int count = 0, i;
    struct calc *my_calc[2];

   //here unable to understand that where i need to resever seprate memory for date?
   my_calc[0] = (struct calc *)malloc(sizeof(struct calc)); 

   //trying to asign the date value 
   for(count; count<2; count++)
   {   
       printf("Please enter day: ");    
       scanf("%d",&my_calc[count]->date.day);

       printf("Please enter month: ");    
       scanf("%d",&my_calc[count]->date.month);

       printf("Please enter Year: ");    
       scanf("%d",&my_calc[count]->date.year);
   }

   //trying to print the date value 
   printf("Day: %d\t  Month: %d\t   Year: %d\n ",my_calc[0]->date.day,my_calc[0]->date.month,my_calc[0]->date.year);

   system("PAUSE");

   return 0;
}
4

3 に答える 3

1

あなたは宣言しdobないdate&my_calc[count]->dob.day

于 2013-03-13T10:54:41.087 に答える
1

たとえばdob、 ではなくを使用する必要があります。date

scanf("%d",&my_calc[count]->dob.day);

アクセスしたい要素の名前はdob-dateは構造体名です。

この変更により、コードは正常にコンパイルされますが、実行時に重大な問題が発生します。メモリを適切に割り当てる方法のヒントについては、他の回答を参照してください。

于 2013-03-13T10:54:47.007 に答える
0

あなたがmallocする場合sizeof(struct calc)、それはその構造体のすべての要素を含みます(読んでください:それは構造体sizeofのすべての要素に対してを行い、それを合計してそれに応じてスペースを割り当てます)。

また、コード内に多くのポインター/配列の問題があります。そのトピックについてよく読んでください。

そして、要素の名前ではなく、要素の名前で参照する必要がありますdobdate

于 2013-03-13T10:55:44.137 に答える