2017-08-27 32 views
-3

我想創建一個結構,並從鍵盤輸入他們的元素並打印它們,但我似乎沒有得到它的權利。我得到了一堆錯誤,我真的不知道如何處理&我甚至設法打開stdio.h文件莫名其妙。對白癡代碼抱歉。業餘C和結構

我懷疑A(I = 0;我< 06分,我++)循環可能有必要在這裏,但我不明白爲什麼這應該是這樣的,如果我要的是進入結構的成員...

#include <stdio.h> 

typedef struct data { 
    int DD[2]; 
    int MM[2]; 
    int GGG[3]; 
    int RR[2]; 
    int BBB[3]; 
    int K[1]; 
} Data; 

Data *p; 

main() 
{ 
    printf("Enter DD"); 
    scanf(p->DD); 
    printf("Enter MM"); 
    scanf(p->MM); 
    printf("Enter GGG"); 
    scanf(p->GGG); 
    printf("Enter RR"); 
    scanf(p->RR); 
    printf("Enter BBB"); 
    scanf(p->BBB); 
    printf("Enter K"); 
    scanf(p->K); 

    printf("%d%d%d%d%d%d", data.DD, data.MM, data.GGG, data.RR, data.BBB, data.K); 
} 
+1

你的錯誤是什麼?運行程序時的編譯或錯誤(運行時)?我可以建議如果你不確定函數的簽名,你應該參考在線[手冊頁](https://en.wikipedia.org/wiki/Man_page)?一個這樣的'scanf'手冊頁可以在這裏找到(https://linux.die.net/man/3/scanf)。 –

+0

你不能只說'Data * p;'然後'scanf(p-> X)',因爲你沒有分配任何內存讓p指向。相反,創建一個不是指針的局部變量並使用它 - 這是您在printf中試圖執行的操作,但不是使用變量名,而是使用數據類型的名稱。 –

+0

修復如[this](https://ideone.com/e17Dgw) – BLUEPIXY

回答

1

開關scanf(p->DD);scanf("%d", &(p->DD));

scanf的需要將輸入字符串作爲第一個參數,並在哪裏存儲該數據作爲第二參數地址的格式。

此外,在printf中的%d之間放置一些空格(或者更酷一些,甚至更酷些,一些\t),以獲得更多可讀輸出。

編輯:因爲有一些其他錯誤以下是一般校正代碼:

#include <stdio.h> 

typedef struct data 
{ 
    int DD[2]; 
    int MM[2]; 
    int GGG[3]; 
    int RR[2]; 
    int BBB[3]; 
    int K[1]; 

} Data; 

main() 
{ 
    Data d; 
    Data* p = &d; 

    printf("Enter DD"); 
    scanf("%d", &(p->DD[0])); 
    printf("Enter MM"); 
    scanf("%d", &(p->MM[0])); 
    printf("Enter GGG"); 
    scanf("%d", &(p->GGG[0])); 
    printf("Enter RR"); 
    scanf("%d", &(p->RR[0])); 
    printf("Enter BBB"); 
    scanf("%d", &(p->BBB[0])); 
    printf("Enter K"); 
    scanf("%d", &(p->K[0])); 

    printf("%d %d %d %d %d %d", d.DD[0], d.MM[0], d.GGG[0], d.RR[0], d.BBB[0], d.K[0]); 
} 

反正你沒有做任何環填補陣列的剩餘空間。如果你想填充其他空格,只需要執行scanf("%d", &(p->BBB[1]));scanf("%d", &(p->BBB[2]));等等你想填充的位置(記住第一個元素是位置0,最後一個是位置大小-1,例如DD的最後一個元素是DD [1])。

+1

另外,請注意,您的結構中有多個陣列,並且您只以這種方式設置每個陣列的第一個值。 –

+0

好的,很棒,我已經這樣做了,但IDE仍然說:「數據未聲明(首次在此函數中使用)。 是否有任何想法? –

+0

是的,我知道如果我想在這個結構的數組有必要引入一個循環,ty! –