2013-02-26 317 views
0

收集變量我問這個前一陣子,但真的很含糊,我也做了一些改變,我的代碼。閱讀和文本文件

我有我稱之爲「stats.txt」我與打開一個文件:(使用「C」 BTW)

fopen("stats.txt", r+) 

在我的程序第一次運行,我會要求用戶填寫在使用的變量寫入文件:

fprintf(fp, "STR: %i(%i)\n", STR, smod); 
fprintf(fp, "DEX: %i(%i)\n", DEX, dmod); 

等等

的文件看起來像這樣的程序第一次運行,所有的對應程序中的變量後的數字:

Level 1 Gnome Wizard: 
STR: 8(-1) 
DEX: 14(2) 
CON: 14(2) 
INT: 13(1) 
WIS: 13(1) 
CHR: 12(1) 
APP: 11(0) 
Fort save: 0 
Reflex save: 0 
Will save: 3 

程序關閉,並運行第二次的時候,我有一個「IF」語句來檢查和「stats.txt」文件中顯示的文本:

if (fgets(buf, 1000, fp) == NULL) 
       { 
        printf("Please enter in your base stats (no modifiers):\n"); 
        enter_stats(); 
        printf("Please indicate your characters level:\n"); 
        printf("I am a level "); 
        level = GetInt(); 
        Race_check(); 
        spec_check(); 
        printf("------Base saving throws (no modifiers)------\n"); 
        saving_throws(); 
       } 
       else 
       { 
        printf("%s",buf); 
       } 

的問題,我時遇到的是,該程序讀取該文件,但不傳遞任何變量值,似乎這裏的事實:

Level 1 Gnome Wizard: 
------------------------- 
STR: 0(-5) 
DEX: 0(-5) 
CON: 0(-5) 
INT: 0(-5) 
WIS: 0(-5) 
CHR: 0(-5) 
APP: 0(-5) 
-----Saving Throws------ 
Fortitude: 0 
Reflex: 0 
Will: 0 

誰能給我就如何讀取變量以及建議?

PLease和謝謝

+0

你在哪裏文件讀取值到底是什麼? – SparKot 2013-02-26 04:48:18

+0

我的「stats.txt」文件 – Jdoging 2013-02-26 09:11:06

回答

0

電腦只能理解數字 - 他們不理解文本。這意味着您必須編寫代碼將數字(表示單個字符)轉換回您想要的值並將它們存儲在某處。

例如,你可能將整個文件加載到一個「char數組」,然後搜索該「char數組」爲4個數字表示STR:,則跳過任何空白(該STR:0(0)之間),然後將字符0轉換爲值0並將其存儲在某處,然後檢查(字符,然後將字符-1轉換爲值-1並將其存儲在某處,然後檢查)字符和換行符\n

更可能的是,安排碼爲「對每一行」循環,其中線的第一字符確定如何處理的其他字符。例如。如果第一個字符是-則忽略該行;否則,如果前5個字符是level呼叫處理該行(1 Gnome Wizard)的其餘部分的功能;否則,如果前幾個字符是STR:DEX:CON等調用一個函數來獲取兩個號碼(和檢查爲右括號等);否則......

除了這一切,你應該有良好的錯誤處理。作爲粗略指導,大約一半的代碼應該是檢查和錯誤消息(如if(buffer[i] != '(') { printf("ERROR: Expecting left bracket after number on line %u", lineNumber); return -1;})。

+0

謝謝,我會試試這個 – Jdoging 2013-02-26 09:11:29