【发布时间】:2018-01-24 22:38:36
【问题描述】:
我需要能够从文本文件中获取数据,该文件格式如下:
起始现金:1500
转弯限制(-1 表示无转弯限制):10
结束游戏的玩家人数:1
属性集乘数:2
酒店之前的房屋数量:4
必须均匀地建造房屋:是
将钱存入免费停车位:否
拍卖属性:无
着陆时的工资乘数:1
为了澄清,我需要冒号后面的数据。我不确定如何处理这个问题。我正在阅读其他问题,他们都说要使用fgets,但我不知道每行会有多长,我们不能静态分配C字符串,所以我将fgets指向的行存储在哪里?另外,是否可以使用fscanf 来做到这一点(我们已经学会了如何做fscanf,但没有学会fgets)?我在处理这个问题时的想法是获取每一行,然后使用我不需要的字符串文字用 sscanf 扫描每一行(我认为这会起作用):
sscanf(str, "Starting Cash: %d", &startingCash);
这行得通吗?
【问题讨论】:
-
可以使用
strchr来定位冒号在行中的位置。或者你可以使用strtok来解析行 -
“我们不能静态分配 C 字符串”。简单的方法是定义一个足够大的本地数组来保存您期望的最长输入。使用
fgets并根据需要限制输入长度。 -
“我需要冒号后面的数据。” 能保证数据按照相同的顺序呈现吗?
-
或者简单地使用面向字符的输入,比如
fgetc,检查':',然后检查'\n'(中间的东西,减去任何前导或尾随空格,是你想要什么) -
@ft_error
atoiis harmful and shouldn't be used