在C语言中逐行读取文本文件
我需要能够从文本文件中获取数据,该文件的格式如下: 起始现金:1500英镑在C语言中逐行读取文本文件,c,file,scanf,fgets,C,File,Scanf,Fgets,我需要能够从文本文件中获取数据,该文件的格式如下: 起始现金:1500英镑 转弯限制(-1表示无转弯限制):10 游戏结束前剩余的玩家数量:1 属性集乘数:2 酒店之前的房屋数量:4 必须平均建造房屋:是 把钱放在免费停车场:否 拍卖财产:无 上班族的工资乘数:1 为了澄清,我需要冒号后面的数据。我真的不知道该怎么做。我在读其他问题,他们都说要使用fgets,但我不知道每行的长度,我们不能静态分配C字符串,所以我将fgets指向的行存储在哪里?另外,是否可以使用fscanf(我们已经学习了如何执
转弯限制(-1表示无转弯限制):10
游戏结束前剩余的玩家数量:1
属性集乘数:2
酒店之前的房屋数量:4
必须平均建造房屋:是
把钱放在免费停车场:否
拍卖财产:无
上班族的工资乘数: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);
其中fin
是文件
指针
%[^::://code>将一直扫描到遇到一个:
且*
用于分配抑制,但不包括该问题;这意味着它的值将被读取,但不会分配到任何地方
在读取到:
之前的点后,必须读取:
本身,后跟空格。因此,:
必须在格式字符串中后跟空格
请参阅。您可以使用strchr
定位行中冒号的位置。或者您可以使用strtok
解析行“我们不能静态分配C字符串”。简单的方法是定义一个足够大的本地数组,以容纳预期的最长输入。使用fgets
并根据需要限制输入长度。“我需要在冒号后显示数据。”是否可以保证数据以相同的顺序显示?或者只需使用面向字符的输入,如fgetc
,然后检查:'
,然后检查'\n'
(中间的内容,减去任何前导或尾随空格,就是您想要的内容)@ft\u error