2013-05-09 70 views
1

我想將下面的代碼行放入c中的一個數組中。這是一個測驗程序,以隨機順序詢問10個問題(超過15個),並跟蹤得分,並最終告訴用戶他們是如何做到的。從txt文件到c中的數組測試問題

這裏是我的文本文件中的一行格式的例子:

究竟是不是在加拿大的官方語言,英語,法語,西班牙語; 3

換句話說

格式串;串;串;串; INT

問題;選擇-A;選擇-b;選擇-C;正確答案

我知道如何在C中逐行讀取文件,但我不知道如何利用這些文件;將一條線分成多條線。此外,不知道如何在用戶選擇他們的選擇作爲一個整數並按下輸入後保持此測驗的分數。

很顯然,我應該定義一個結構來呈現這些問題......

任何幫助將不勝感激。是的,這是爲了一個最終的項目,但是講座現在已經結束了,我們的老師不會在上課時間以外爲學生提供幫助。

這是我迄今所做的:

http://i.stack.imgur.com/E8LtH.png

回答

1

由於這是一類,我不,如果你的老師希望你使用低技術含量的方法或不知道,但我會使用像sscanf這樣的問題。你可以這樣做:

int number; 
char fruit[16]; 
char line[]="I ate 3 bananas."; 
sscanf(line, "I ate %d %s.", &number, fruit); 

它會更新您指向sscanf函數內相應的變量。

+0

感謝您的回覆,我添加了一個屏幕截圖到我原來的問題,所以每個人都可以看到我的工作。教練需要一個基本的C程序,但它必須是滿分的滿分。我的努力是將所有這些組件結合在一起。比如我如何執行char line [] =然後我必須讀「我吃了3個香蕉」。從文件而不是在程序中輸入。但是屏幕會逐行告訴我所有想要完成程序要求的評論。 – user2364091 2013-05-10 03:32:40

1

由於這是一個班級項目,我只提供一般指導。我建議您檢查strtok函數,使用文本文件中的行作爲字符串,並使用「;」作爲令牌。示例和文檔可用here。重複調用此功能將允許您將線路分成多個部分。

至於結構要求,明智的方法是創建一個結構與這些構件:

  1. 的字符串(字符*)包含的問題。
  2. 包含選項的字符串數組。
  3. 一個int,用於定義選項的數量(即2中數組的長度)。您可以在您的示例中將其硬編碼爲3。
  4. int定義正確的答案。

您會爲文本文件中的每一行創建一個結構實例。

+0

感謝您的回覆,我添加了一個鏈接到我原來的問題,所以你可以看到我在看什麼。我創建了與成員的結構,但我不知道如何創建一個字符串數組?例如,如果在15個可能的問題中有10個問題需要隨機提問,那麼我的數組必須是15個「長」的東西? – user2364091 2013-05-10 03:28:22

0

你需要的可能是一個標記器。 你可能想看看這裏的討論Using strtok in c。列出了一些代碼,在我看來,這對你的情況非常有用。