使用不同数据类型的输入读取C中的文件

时间:2014-03-20 18:23:17

标签: c fgets fread scanf

我正在读取C格式的文件,格式如下

int int int int char double double

但重复了很多次。 (文件的第一行,未在示例中列出,指定此序列将重复的次数)我想将这些值解析为结构。但是,我不知道如何读取这些元素,因为它们具有不同的数据类型, 我正在研究三种不同的方法

fread - >不起作用,因为不同的元素具有不同的数据类型,并且不会有相同的字节数。

fscanf - >由于多种不同的数据类型不起作用

与fgets - >不起作用因为它只有在换行符后才会停止。

所以我不知道该怎么做。也许我正在寻找一个优雅的解决方案来加载像这样的丑陋输入的文件,或者我可能忽略了我已经提到的一个功能中的某些东西。

这是一个学校项目顺便说一句,但我不是要求答案,只是一个提示。

我仅限于在stdio和stdlib库中可以使用的内容。

感谢所有帮助

3 个答案:

答案 0 :(得分:1)

fscanf应该有用。

fscanf(file, "%d %d %d %d %c %lf %lf", ....);

答案 1 :(得分:1)

您可以使用任何这些功能从文件中读取。对于这种情况最容易使用的是fscanf()
你可以在循环中读取,因为你知道通过迭代已知次数来读取的次数。

fscanf(fd,"%d %d %d %d %d %c %lf %lf",&a,&b,&c,&d,&e,%f,&h)

或者你可以创建一个结构

struct data
{
  int a;
  int b;
  int c;
  int d;
  char e;
  double h;
  double i;
}var1;

并在fscanf()中使用它来填充其成员的值

答案 2 :(得分:1)

要详细说明之前的答案,您需要以下内容:

int intVar1;
int intVar2;
int intVar3;
int intVar4;
char c;
double doubleVar1;
double doubleVar2;

fscanf(file, "%d %d %d %d %c %lf %lf", 
       &intVar1,
       &intVar2,
       &intVar3,
       &intVar4,
       &c,
       &doubleVar1,
       &doubleVar2);