2013-02-22 59 views
-2

我在這裏有點新,所以我提前道歉,如果我沒有足夠的解釋,所以在這裏它:如何檢查文本的文本文件,然後存儲變量?

爲了給你一個圖片,我有一個fopen命令打開和/或創建一個文本文件參數讀/寫/重寫,如果我是正確的

fp = fopen("stats.txt", "w+"); 

我已經將文件寫入到具有:

void display_stats() 
{ 
//some math needed for calculations 
smod = (STR - 10)/2; 
dmod = (DEX - 10)/2; 
cmod = (CON - 10)/2; 
imod = (INT - 10)/2; 
wmod = (WIS - 10)/2; 
hmod = (CHR - 10)/2; 
amod = (APP - 10)/2; 

//print to console 
printf("STR: %i(%i)\n", STR, smod); 
printf("DEX: %i(%i)\n", DEX, dmod); 
printf("CON: %i(%i)\n", CON, cmod); 
printf("INT: %i(%i)\n", INT, imod); 
printf("WIS: %i(%i)\n", WIS, wmod); 
printf("CHR: %i(%i)\n", CHR, hmod); 
printf("APP: %i(%i)\n", APP, amod); 
printf("-----Saving Throws------\n"); 
printf("Fortitude: %i\n", fort); 
printf("Reflex: %i\n", rflx); 
printf("Will: %i\n", will); 

// write to file 
fprintf(fp, "Level %i %s %s:\n",level,race_r,spec_c); 
fprintf(fp, "STR: %i(%i)\n", STR, smod); 
fprintf(fp, "DEX: %i(%i)\n", DEX, dmod); 
fprintf(fp, "CON: %i(%i)\n", CON, cmod); 
fprintf(fp, "INT: %i(%i)\n", INT, imod); 
fprintf(fp, "WIS: %i(%i)\n", WIS, wmod); 
fprintf(fp, "CHR: %i(%i)\n", CHR, hmod); 
fprintf(fp, "APP: %i(%i)\n", APP, amod); 
fprintf(fp, "Fort save: %i\n", fort); 
fprintf(fp, "Reflex save: %i\n", rflx); 
fprintf(fp, "Will save: %i\n", will); 

} 

其輸出這在文件「stats.txt」(取決於用戶什麼輸入)

Level 2 Gnome Sorcerer: 
STR: 8(-1) //STR=8 smod=-1 
DEX: 14(2) //DEX=14 dmod=2 
CON: 14(2) //etc... 
INT: 13(1) 
WIS: 13(1) 
CHR: 12(1) 
APP: 11(0) 
Fort save: 0 
Reflex save: 0 
Will save: 3 

現在,對於節目第二輪,我希望它來檢查文件的文本,如果屬實,那麼輸出的文本與存儲所有變量供以後使用以來,我目前有:

if (fgets(buf, 1000, fp) == NULL) //char buf[1000]/FILE fp if "stats.txt" has no text 
       { 
        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 //if "stats.txt" has text 
       { 
        printf("%s",buf); 
       } 
       break; //ending of a case statement 

請和謝謝你的幫助,這是令人沮喪的。

+1

你有問題嗎? – melpomene 2013-02-22 09:48:07

+1

怎麼回事?你已經打開文本文件。你現在可以逐行讀取它?然後將其存儲到您的程序中的一個簡單的var。 – 2013-02-22 09:51:56

回答

0

由於你沒有寫任何問題,我猜它是像'它只讀一行'的東西。

這是因爲fgets函數只能讀取到n-1個字符或達到換行符

更多信息here

0
FILE* fp1; 

    FILE* fp2 

    fp1 = fopen("text_to_read","r"); 

    fp2 = fopen("text_to_write","w+"); 

    char* s; 

    while(fscanf(fp,"%s",s) != EOF) 

{

fprintf(fp2,"%s",s); 

}

printf("Its done!!") 
相關問題