-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

今、プログラムの2回目の実行のために、ファイルのテキストをチェックし、trueの場合、そのテキストを出力し、後で使用するためにすべての変数を保存します。現在、次のとおりです。

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

助けてくれてありがとう、これはイライラします。

4

2 に答える 2

0

あなたは質問を書いていないので、「1行しか読んでいない」のようなものだと思います。

これは、文字を取得するか、改行文字に到達するfgetsまでしか読み取らない関数によるものです。n-1

詳細はこちら

于 2013-02-22T10:22:25.880 に答える
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!!")
于 2013-02-22T13:52:45.370 に答える