2011-11-30 67 views
0

任務:創建工人數據庫。該計劃還應該輸出工人的信息 名稱和統計所有工人的平均工資。當我嘗試編譯此代碼C中的結構問題

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

struct worker { 
    char name[10]; 
    int salary; 
}; 
int main (void); 
    struct worker p1 = {"koko", 3400}; 
    printf ("name=%s,salary=%d,p1,name,p1,salary"); 
    return(0); 
} 

我得到

./dz2.c:11:9: error: expected declaration specifiers or «...» before string constant 
./dz2.c:12:1: error: expected identifier or «(» before «return» 
./dz2.c:13:1: error: expected identifier or «(» before «}» token 

我會爲這個問題的解決表示感謝。

+2

格式化代碼很好。代碼不只是供電腦閱讀 – sehe

回答

1

由他人結合的提示:

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

struct worker { 
    char name[10]; 
    int salary; 
}; 

int main(int argc, const char *argv[]) 
{ 
    struct worker p1 = {"koko", 3400}; 
    printf ("name=%s,salary=%d\n",p1.name,p1.salary); 
    return 0; 
} 

注意如何

  • p1.namep1.salary參照內的字段p1(的worker型)
  • main聲明固定
1

定義main()時有語法錯誤。它需要一個開放的大括號,而不是分號。

2

從以下行int main(void);的末尾刪除;,並插入{

2

更改int main (void);到:

int main (void) { 

您使用int main (void);聲明原型,但必須打開括號啓動該功能的實際內容。

2

你做錯了很多事情。

由於這是功課,你應該學習的東西,試試這些東西:

  • 開始用程序,它是包含文件和一個空的主要功能只是骨架。這樣做會告訴你,你寫錯了int main(void);。它應該是int main() {
  • 以一個printf函數調用開始,該調用只輸出一個您鍵入的數字。這應該會告訴您,您做了printf參數錯誤。你爲什麼認爲變量應該在字符串雙引號內?一旦你確實有正確的參數,爲什麼你認爲有兩個轉換(%s和%d)的printf可以使用四個參數?

總之:當你用新的代碼得到語法錯誤時,備份並取消你的改變,直到你有編譯的代碼。然後寫一小段新的代碼,以便您可以確切地看到錯誤的位置。

另外我建議使用最高級別的警告選項進行編譯。那會告訴你printf語句是錯誤的。我相信這是Microsoft Visual Studio在調試模式下的默認值。對於Linux或BSD上的GCC,您可以將-Wall -W添加到您的gcc命令中。

0

請原諒我,如果我錯了,但看起來像你通常會在考試中得到一個馬車來源。 錯誤的分號並不是程序中唯一的錯誤。

如果我錯了,隨時糾正我。