我如何读取整数文件并存储在c中的变量中

时间:2015-11-15 21:29:30

标签: c file struct

我刚刚开始编程。

我想以格式

的形式阅读文本文件中的整数文件
    int1(space)int2(space)int3
    int4(space)int5(space)int6
    int7(space)int8(space)int9

data file example (actually has 25 million lines)

1000002 1 55
1000002 1000006 33
1000002 1000007 8

我正在尝试读取数字和每行我想将3个int存储到一个单独的变量中,这样我就可以创建一个每个结构有3个int的结构。我有一个函数来创建结构但是我不知道如何逐行读取数字然后将每个3个整数分配给一个临时变量。

我将使用动态分配来存储结构,所以只将数组作为临时存储

    FILE *fp = fopen("uboss.txt", "r");
    //char text[255];
    int i = 1;
    int a = 1;
    int numberArray[9999];
    int tmpUI = 0;
    int tmpAI = 0;
    int tmpPC = 0;

    if (fp == NULL)
    {
        printf("Error Reading File\n");
        exit (0);
    }

   while (!feof(fp))
   {
        fscanf(fp, "%d ", &numberArray[i]);
        printf("Number %d: %d\n",i,numberArray[i]);
        tmpUI = numberArray[a];
        tmpAI = numberArray[a+1];
        tmpPC = numberArray[a+2];
        i++;
   }

    fclose (fp);

2 个答案:

答案 0 :(得分:3)

你不是唯一一个询问这项任务的人。尝试一种更简单的方法:

  • 在循环中,使用fgets()
  • 读取每一行
  • 然后使用sscanf(str, "%d%d%d", &a, &b, &c);扫描整行3个整数并检查返回值,它应为3
  • 最后处理这些值:存储它们,测试它们,输出它们......

可能需要注意其他问题:

  • 如果输入文件包含非数字值怎么办?
  • 如果值大于int类型中的值,该怎么办?

答案 1 :(得分:0)

如果您知道fscanf如何工作(并返回),那就很简单了:

while( fscanf(fp, "%d%d%d", &tmpUI, &tmpAC, &tmpPC) == 3 )
{
  ...
}