-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

请并感谢您的帮助,这令人沮丧。

4

2 回答 2

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 回答
0

由于您没有写任何问题,我猜它类似于“它只读取一行”。

这是因为该fgets函数仅在获取n-1字符或到达换行符之前读取。

更多信息在这里

于 2013-02-22T10:22:25.880 回答