是的,所以我很难尝试读取多行数字的文件(每行都有浮点数和整数的混合)。我有一个.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;
}
答案 0 :(得分:0)
要使while
循环正常工作,您需要更改
else((first==0)&&(second==0)&&(qty==0));
{
break;
}
进入
else if ((first==0)&&(second==0)&&(amount==0))
{
break;
}
现在的方式,break;
总是在每次迭代时执行。