2013-08-07 49 views
-2

在編譯時我有一個錯誤:預期)和(在C以下程序:預期)和(在C錯誤

#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); 
    } 

這是我已經宣佈了結構的學生那麼爲什麼它給我的錯誤(和)在兩行..

+0

這不是C,看起來更像C++,C中沒有引用。另外,檢查你的拼寫和其他錯誤,編譯器應該告訴你這些。 – Nobilis

+0

使用printf和scanf然後它怎麼可能是C++ ..所以抱歉我的拼寫錯誤,但我得到這兩個錯誤,沒有警告..! – gazer

+0

你使用什麼樣的編譯器?我在'&'令牌之前說'錯誤:預期';',','或')',這使得它更清楚錯誤實際上是什麼。 –

回答

0

你的功能printData應該接受一個指針struct student *obstruct student &ob

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.
+0

我必須改變無效printdata (struct student &sob); void printdata(struct student * sob); – gazer

+0

@shivaniits是的,還糾正了我提到的其他問題 –

1
  • struct student &無效C.這似乎是C++代碼。
  • void main()是無效的C(除非該程序是一個獨立的程序,這顯然不是)。
  • 按照C11標準,gets()函數已從C語言中刪除。
  • fflush(stdin)是未定義的行爲。

無關,您的代碼很難閱讀。養成在不同函數和聲明之間添加空行的習慣。

不相關的,看起來你正在使用Turbo C for DOS或類似的東西壞和非標準。不要使用這種舊的垃圾編譯器,使用糟糕的編譯器是所有這些問題的一個來源。

1

你犯了一個錯字:

gets(std.claases); // it's std.classes 

而且printdata()參數應爲 「結構學生*泣」。

這個解決方案應該作品:

#include <stdio.h> 

struct student { 
    char name[20]; 
    int rollno; 
    int age; 
    char classes[10]; 
}; 

void printdata(struct student *sob); 

int main(void) { 
    struct student stud; 
    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.classes); 
    printdata(&stud); 
    return 0; 
} 

void printdata(struct student *sob) 
{ 
    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); 
} 

BTW,主要功能必須返回一個整數,它是一個標準。

+0

謝謝..錯誤清除.. – gazer