如何在C中读取具有多行浮点数和整数的文件?

时间:2014-10-05 19:45:35

标签: c file

是的,所以我很难尝试读取多行数字的文件(每行都有浮点数和整数的混合)。我有一个.txt文件,从那里我试图扫描这些行,并确定第二个浮点数是否大于第一个浮点数,并根据结果做出决定。到目前为止,它的确有效,但问题在于我无法进入第二行或第三行,因为程序在第一行之后就停止了。

这是.txt文件的示例:

 9.64 6.30 3
 2.77 3.98 10
 5.63 4.20 5
 0.00 0.00 0

*当scanf为所有值命中0时,它会跳出循环并停止程序。另外,我不必知道文件中有多少行,但我知道每行会有两个浮点数和一个整数(按此顺序)。

现在有了这些数字,我试图比较浮点值来确定某些东西,然后使用整数和浮点数计算一个答案,然后将其打印到一个单独的.txt文件中。

这里是我制作的示例代码,它遵循与我正在处理的结构相同的结构(顺便说一句,我已经查看了getf()函数和数组但是我几乎已经一个大人物,所以我仍然对如何/在何处使用它们感到困惑。)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main (void)
{
    int amount, x;
    float first, second, current_value, total_positive, total_negative;
    FILE *fin = fopen("numbersin.txt", "r");
    FILE *fout = fopen("resultout.txt", "w");

    x=1;
    amount=0;
    total_positive=0;
    total_negatve=0;

    while(x=1)
    {
        fscanf(fin, "%f %f %d", &first, &second, &amount);
        if((second-first) > 0)
        {
            current_value=amount*(first+second);
            total_positive=total_positive+current_value;
            fprintf(fout, "%0.2f %0.2f %d:increase = %0.2f, total increase = %0.2f", first, second, amount, current_value, total_positive);
        }
        else if((second-first) < 0)
        {
            current_value=amount*(first+second);
            total_negative=total_negative+current_value;
            fprintf(fout, "%0.2f %0.2f %d:decrease = %0.2f, total decrease = %0.2f", first, second, amount, current_value, total_negative);
        }
        else((first==0)&&(second==0)&&(amount==0));
        {
            break;
        }
    }

    fclose(fin);
    fclose(fout);
    system("notepad resultout.txt");
    system("pause");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

要使while循环正常工作,您需要更改

else((first==0)&&(second==0)&&(qty==0));
    {
        break;
    }

进入

 else if ((first==0)&&(second==0)&&(amount==0))
    {
        break;
    }

现在的方式,break;总是在每次迭代时执行。