gpt4 book ai didi

c - 读取并收集文本文件中的变量

转载 作者:行者123 更新时间:2023-11-30 17:54:11 25 4
gpt4 key购买 nike

我不久前问过这个问题,但非常模糊,我也对我的代码做了一些更改。

我有一个名为“stats.txt”的文件,我用以下命令打开该文件:(顺便说一句,使用“C”)

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

任何人都可以给我关于如何读取变量的建议吗?

请允许并谢谢

最佳答案

计算机只能理解数字 - 它们不能理解文本。这意味着您必须编写代码将数字(代表单个字符)转换回您想要的值并将它们存储在某处。

例如,您可以将整个文件加载到“char 数组”中,然后在该“char 数组”中搜索代表 STR: 的 4 个数字,然后跳过任何空格(之间的空格) STR:0(0)),然后将字符 0 转换为值 0 并将其存储在某处,然后检查对于 ( 字符,然后将字符 -1 转换为值 -1 并将其存储在某处,然后检查 ) 字符和换行符\n

更有可能将代码安排为“每行”循环,其中一行的第一个字符确定如何处理其他字符。例如。如果第一个字符是 - 则忽略该行;否则,如果前 5 个字符是级别,则调用处理该行剩余部分的函数(1 Gnome Wizard);否则,如果前几个字符是 STR:DEX:CON 等,则调用一个函数来获取这两个数字(并检查正确的数字)括号等);否则...

除此之外,您还应该具有良好的错误处理能力。作为粗略的指导,大约一半的代码应该是检查和错误消息(例如 if( buffer[i] != '(' ) { printf("ERROR: Expecting left arrow after number on line %u", lineNumber); return -1;}).

关于c - 读取并收集文本文件中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15081466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com