我正在制作基于文本的游戏,并希望用户能够保存。当他们保存所有变量时,将被保存到一个文本文件中。
我不知道如何将它们从文件中取出并将它们分配给特定的变量和指针。
该文件看起来有点像这样:
jesse
hello
yes
rifle
0
1
3
20
无论如何我可以指定我想用 fscanf 取出哪一行?还是我必须采取不同的方法?
我正在制作基于文本的游戏,并希望用户能够保存。当他们保存所有变量时,将被保存到一个文本文件中。
我不知道如何将它们从文件中取出并将它们分配给特定的变量和指针。
该文件看起来有点像这样:
jesse
hello
yes
rifle
0
1
3
20
无论如何我可以指定我想用 fscanf 取出哪一行?还是我必须采取不同的方法?
虽然我无法准确说出您想要什么,但我会提出一些建议:
使用 SQLite 文件而不是文本文件。这样您就可以使用 SQL 准确地获得您想要的东西。你的捷径:http ://www.sqlite.org/
如果您仍想使用文本文件,请使用逗号分隔而不是空格分隔。这是一种更常见的做法。
无法指定从哪一行读取,因为 C 中文件流的概念没有明确区分新行。它们被简单地视为一个字符。要从特定行读取,您必须向前循环fseek
,fgetc
直到您找到'\n'
可以更新一些变量来保存流指向的当前行号。
解决此问题的一种方法是在固定偏移量处获取信息。例如,假设您正在存储玩家信息,那么如果您将玩家信息设置为固定大小 X 并将组成数据放在每个结构的固定索引处,您就可以fseek
立即到正确的位置。
但是,如果您有结构化数据,则可能更适合使用能够固有地表示这些结构的格式,例如 XML 或 JSON。
我为我的 C 程序创建了一个简单的设置阅读器,了解如何解析测试文件可能对您有用 https://codereview.stackexchange.com/questions/8620/coding-style-in-c