-2

コンパイル中にエラーが発生しました: expected ) and ( in c for the following program:

    #include<stdio.h>
    #include<conio.h>
    struct student
    {
        char name[20];
        int rollno;
        int age;
        char classes[10];
    };
    void printdata(struct student &sob); //getting error in this line
    void main()
    {
        struct student stud;
        clrscr();
        printf("enter student details:");
        printf("\nenter student name:"); fflush(stdin);
        gets(stud.name);
        printf("\nenter age:");
        scanf("%d",&stud.age);
        printf("\nenter rollno:");
        scanf("%d",&stud.rollno);
        printf("\nenter class of student:"); fflush(stdin);
        gets(stud.claases);
        printdata( &stud);
        getch();
    }
    void printdata(struct student &sob) //getting error in this line
    {
        struct student *ptr;
        ptr=sob;
        printf("student details are as follows:");
        printf("\nstudent's name:"); fflush(stdout);
        puts(ptr->name);
        printf("\n student' age:%d",ptr->age);
        printf("\n student's roll no:%d",ptr->rollno);
        printf("\n student's class:"); fflush(stdout);
        puts(ptr->classes);
    }

それは私がすでに構造学生を宣言しているということです.なぜ2行でエラー(および)が表示されるのですか..

4

4 に答える 4

1
  • struct student &は有効な C ではありません。C++ コードのようです。
  • void main()有効な C ではありません (プログラムが独立したものである場合を除きますが、このプログラムは明らかにそうではありません)。
  • gets() 関数は、C11 標準に従って C 言語から削除されました。
  • fflush(stdin)未定義の動作です。

無関係ですが、あなたのコードは読みにくいです。異なる関数と宣言の間に空の行を追加する習慣をつけてください。

関係ありませんが、あなたは DOS に Turbo C を使用しているか、同様に標準的ではないものを使用しているようです。そのような古いがらくたコンパイラを使用しないでください。悪いコンパイラを使用すると、これらすべての問題の原因の 1 つになります。

于 2013-08-07T08:54:52.140 に答える
0

あなたの関数は、ポインタではなくprintData受け入れる必要があります。struct student *obstruct student &ob

于 2013-08-07T08:50:08.170 に答える
0

C には参照がありません(C++ のように)。関数のプロトタイプと定義を変更して、ポインターを引数として受け取ります。

変化する

void printdata(struct student &sob); //getting error in this line

void printdata(struct student *sob); //getting error in this line

変更する

void printdata(struct student &sob) //getting error in this line

void printdata(struct student *sob) //getting error in this line

その他の問題は次のとおりです。

  1. メンバー名のつづりが間違っています: 次のgets(stud.claases);ようにする必要があります:gets(stud.classes);
  2. 使用しないでくださいgets()fgets()代わりに使用するとgets()安全ではなく、バッファ オーバーフローの問題が発生します。
  3. fflush(stdin);C では未定義の動作です。
于 2013-08-07T08:50:29.030 に答える