0

プロジェクトに取り組んでいて、構造体を関数に渡そうとしています。さまざまな方法を試しましたが、まだ足りません。エラーメッセージが表示されます:

このタイプの表現の違法な使用。

本当に助けていただければ幸いです。

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

 struct big{
        int day;
        int year;
        char month[10];
        } ;

      void gen(struct big);
      void main()
    {
int choice;

printf("\t\t\t\t\t*MENU*\n\n\n");
printf("\t\tGenerate Buying/Selling Price-------------------PRESS 1\n\n");
printf("\t\tDisplay Foreign Exchange Summary----------------PRESS 2\n\n");
printf("\t\tBuy Foreign Exchange----------------------------PRESS 3\n\n");
printf("\t\tSell Foreign Exchange---------------------------PRESS 4\n\n");
printf("\t\tExit--------------------------------------------PRESS 5\n\n\n\n");
printf("\t\tPlease enter your choice");
scanf("%d", &choice);

if (choice == 1)
{
    gen(big);
}
system("pause");

    }

void gen(big rec)
{
printf("Enter the date in the format: 01-Jan-1993");
scanf("%d %s %d", &rec.day, &rec.month, &rec.year);
}
4

2 に答える 2

2

構造体定義自体を渡そうとしているので、そのインスタンスを作成してから渡します。

big myBig;
gen(myBig);
于 2013-03-04T02:08:43.927 に答える
0

a>構造体のオブジェクトを作成しませんbig。あなたはそれをすることができますbig obj;

b>void mainはプログラムするのに悪い方法です。int main(void)少なくとも使用してください。

c>スタック上のコピーの代わりに参照を渡す

このような:

void gen(big& obj)
{
    printf("Enter the date in the format: 01-Jan-1993");
    scanf("%d %s %d", &rec.day, &rec.month, &rec.year);
}

タイプのオブジェクトを作成する必要がありますbigstruct big家の青写真です。bigObject下にあるのは家です。struct big値などを保持するタイプの実際の変数。

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

struct big{
    int day;
    int year;
    char month[10];
};

void gen(struct big);
void main()
{
    int choice;
    big bigObject;
    printf("\t\t\t\t\t*MENU*\n\n\n");
    printf("\t\tGenerate Buying/Selling Price-------------------PRESS 1\n\n");
    printf("\t\tDisplay Foreign Exchange Summary----------------PRESS 2\n\n");
    printf("\t\tBuy Foreign Exchange----------------------------PRESS 3\n\n");
    printf("\t\tSell Foreign Exchange---------------------------PRESS 4\n\n");
    printf("\t\tExit--------------------------------------------PRESS 5\n\n\n\n");
    printf("\t\tPlease enter your choice");
    scanf("%d", &choice);

   if (choice == 1)
   {
      gen(bigObject); /*pass bigObject to gen*/
   }
   system("pause");
   return 0;
}

void gen(big& rec)
{
  printf("Enter the date in the format: 01-Jan-1993");
  scanf("%d %s %d", &rec.day, &rec.month, &rec.year);
}
于 2013-03-04T02:20:09.897 に答える