c - 如何检查文本文件中的文本然后存储变量?

标签 c fopen fread

我是新来的,所以如果我解释得不够,我提前道歉,所以这里是:

给你一张图片,我有一个 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

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

最佳答案

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

这是因为 fgets 函数只会读取直到获取 n-1 个字符或到达换行符

更多信息here .

关于c - 如何检查文本文件中的文本然后存储变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15021168/

相关文章:

c - 如何在阅读(fopen)文件时阻止文件

c - 如何使用 write/fread 向结构数组写入/读取数据?

我可以在二进制文件中使用 fgetc() 或 fputc() 吗?

对传递引用感到困惑

c - 使用结构查找特定的 ID 信息

c - Unix 域 SOCK_DGRAM 和 SOCK_SEQPACKET 之间的区别?

有人能告诉我这个 C 程序做错了什么吗?

c - scanf 之后 fgets 不起作用

c++ - fprintf 调试断言失败

c - 为什么我的 fread 会返回一个空字符串?