2015-04-12 49 views
0

即時學習C,我找不到解決我的問題,所以我轉向你們的專家。 我可以編譯並運行我的代碼,但在輸入了所有變量後,程序給我提供了分段錯誤(核心轉儲) 在Ubuntu 14.04上運行Geany作爲編輯器和gcc作爲編譯器。分段錯誤(核心轉儲)。沒有編譯錯誤。搜索論壇

Ps.My英語不是最好的。

繼承人我的代碼:

#include<stdio.h> 

typedef struct 
{ 
int inkomst; 
int hyra; 
int el; 
int vatten; 
int tele; 
int forsakring; 
int mat; 
int klader; 
int lan; 
int transport; 
int ovrigt; 
int summa; 
} base; 

void budgetBase(); 

int main(int argc, char *argv[]){ 
budgetBase(); 
return 0;} 

void budgetBase(base c){ 
printf("BudgetBase\n\n"); 

printf("Monthly income: "); 
scanf("%d", &c.inkomst); 
printf("\nRent: "); 
scanf("%d", &c.hyra); 
printf("\nElectric bill: "); 
scanf("%d", &c.el); 
printf("\nWater bill: "); 
scanf("%d", &c.vatten); 
printf("\nTele/data bill: "); 
scanf("%d", &c.tele); 
printf("\nInsurance bill: "); 
scanf("%d", &c.forsakring); 
printf("\nFood bill: "); 
scanf("%d", &c.mat); 
printf("\nClothing: "); 
scanf("%d", &c.klader); 
printf("\nMorgage: "); 
scanf("%d", &c.lan); 
printf("\nTransport: "); 
scanf("%d", &c.transport); 
printf("\nOther expenses: "); 
scanf("%d", &c.ovrigt); 

    int sum = c.inkomst - c.hyra - c.el 
     - c.vatten - c.tele - c.forsakring 
     - c.mat - c.klader - c.lan - c.transport - c.ovrigt; 

printf("\n\nSum: %d",sum); 

return;} 

我知道這看起來不錯,所以請好的。 :)

+1

你可以粘貼一些錯誤或輸出? –

+0

有幾個原因,請勿使用typedef結構體定義 – user3629249

+1

main的argc和argv []參數未使用。編譯器會引發警告。通過使用'int main(void);主要聲明的聲明。 – user3629249

回答

3
void budgetBase(base c){ 

應該

void budgetBase(){ 
    base c 
    /*Rest of the code*/ 

,因爲你叫

budgetBase(); 

不帶任何參數。這應該匹配功能簽名。

順便說一下,return;在功能budgetBase()結束是不需要的。

+1

非常感謝!這解決了它!和我一樣喜歡noob是不容易的。 :) – Hartvik