2015-11-21 97 views
-1

我遇到了此代碼的問題。我得到了錯誤「未初始化的局部變量」question1「used」,我是c新手,我真的很想學習。我試圖建立一個測驗程序,我可以使用結構和文本文件。我只是盯着,但錯誤的方式!未初始化的結構c

代碼是!

#pragma warning(disable:4996) 
#include<stdio.h> 
#include<stdlib.h> 

#define max 70 
struct question{ 
    char *questions; 
    char *alter1; 
    char *alter2; 
    char *alter3; 
    char *alter4; 
    char correct; 
}; 


int main(){ 

char *m; 
struct question question1; 
struct question Alt1; 



    question1.questions[max] = "what is my name?A:Haidar?B:Ali?C:Hagob?D:Aws?"; 
    Alt1.alter1 = 'A'; 
    Alt1.alter2 = 'B'; 
    Alt1.alter3 = 'C'; 
    Alt1.alter4 = 'D'; 
    Alt1.correct; 
    m = question1.questions[max]; 
    printf("%s\n", *m); 
    scanf("%c", &Alt1.correct); 

    if (Alt1.correct == Alt1.alter1); 
    { 
     print("right you have won\n"); 
    } 

    if ((Alt1.correct) != Alt1.alter1); { 

     printf("sorry\n"); 
    } 



    system("pause"); 
} 
+0

你沒有給'question1'一個初始值。 – Arc676

+0

我該怎麼做? :) –

+0

那麼一種方法是給它一個初始值'{「」,「」,「」}「(5個字符串和1個字符)。 – Arc676

回答

0

question1.questionschar指針。當你寫question1.questions[max]你說的「帶指針的當前值,增加(一個char的50倍的長度)的微博,取消引用的結果。

question1.questions從來沒有給出一個初始值。這是一個因爲它不指向任何地方,所以它不能指向任何地方。因此,你不能指定它。

既然你說它應該是一個字符串數組,而不是單個字符串,那麼你的結構定義應該如下所示:

#define max 70 
struct question{ 
    char *questions[max]; 
    char *alter1; 
    char *alter2; 
    char *alter3; 
    char *alter4; 
    char correct; 
}; 

Then questions[0] would refer到第一個字符串。 questions[max-1]將是最後一個字符串。 questions[max]將會是一個錯誤,超出數組的末尾。

+0

它應該是一個字符串數組! –

+0

更新了答案。 –

+0

我真的這樣做了,但後來我得到兩個錯誤,說:「無法解析的外部和未解析的外部符號,主要功能中的打印參考」 –