gpt4 book ai didi

c - C语言中逐行读取文本文件

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

我需要能够从文本文件中获取数据,该文件以以下格式呈现:

Starting Cash: 1500
Turn Limit (-1 for no turn limit): 10
Number of Players Left To End Game: 1
Property Set Multiplier: 2
Number of Houses Before Hotels: 4
Must Build Houses Evenly: Yes
Put Money In Free Parking: No
Auction Properties: No
Salary Multiplier For Landing On Go: 1

为了澄清,我需要冒号后显示的数据。我不太确定如何解决这个问题。我正在阅读其他问题,他们都说使用 fgets,但我不知道每行有多长,而且我们无法静态分配 C 字符串,所以我将在哪里存储指向的行通过fgets?另外,是否可以使用 fscanf 来做到这一点(我们已经学习了如何执行 fscanf 但没有学习 fgets)?我的想法是获取每一行,然后使用 sscanf (我认为这可行)使用我不需要的字符串文字扫描每一行:

sscanf(str, "Starting Cash: %d", &startingCash);

这行得通吗?

最佳答案

使用fopen()打开文件后,你可以这样做

float cash;
int turnlimit, plyrno, mult, house;
fscanf(fin, "%*[^:]: %f", &cash);
fscanf(fin, "%*[^:]: %d", &turnlimit);
fscanf(fin, "%*[^:]: %d", &plyrno);

其中 finFILE 指针。

%[^:] 会扫描,直到遇到 :(但不包括),并且 * 用于赋值抑制;这意味着它的值将被读取但不会分配到任何地方。

读取到 : 之前的点后,必须读取后面跟有空格的 : 本身。因此,格式字符串中必须包含 :,后跟一个空格。

参见What is the purpose of using the [^ notation in scanf? .

关于c - C语言中逐行读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48432876/

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