在C中逐行读取文本文件

时间:2018-01-24 22:38:36

标签: c file scanf fgets

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

  

起动现金:1500
  转弯限制(-1表示没有转弯限制):10
  剩余玩家数量游戏:1
  物业集乘数:2
  酒店门票数量:4
  必须平等地建造房屋:是的   把钱放在免费停车场:没有   拍卖物业:没有   登陆的工资乘数:1

为了澄清,我需要结肠后呈现的数据。我真的不确定如何处理这个问题。我正在阅读其他问题并且他们都说要使用fgets,但我不知道每行会有多长时间而且我们无法静态分配C字符串,所以我将在哪里存储{指向的行{1}}?此外,是否可以使用fgets执行此操作(我们已经了解了如何执行fscanf但未学习fscanf)?接近这个时我的想法是得到每一行,然后使用sscanf扫描每一行(我认为这会起作用)使用我不需要的字符串文字:

fgets

这会有用吗?

1 个答案:

答案 0 :(得分:1)

使用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?