我在文本文件中编写双数组数组时遇到问题。问题是,代码运行,但没有写出任何东西。
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *out;
double numbers[30];
int i=0;
for(i;i<30;i++)
scanf("%lf", &numbers[i]);
out=fopen("out.txt", "w");
if (out == NULL) {
fprintf(stderr, "error in opening .txt");
exit(EXIT_FAILURE);
}
while ( i<30 ) {
fprintf(out, "%.3f", numbers[i]);
i++;
}
fclose(out);
return 0;
}
基本上,代码应该在文本文件中写出一个包含30个双数的数组,并将小数点四舍五入为“.3”。
答案 0 :(得分:3)
您忘记将i
重新初始化为0,因此i
的当前值为30,这有效地导致while
循环不执行
i = 0; //Re-initialise i.
while ( i<30 ) {
fprintf(out, "%.3f", numbers[i]);
i++;
}
如果你使用for
循环会更好,因为它的语法可以帮助你记住初始化增量变量。
for (i = 0; i < 30; ++i)
fprintf(out, "%.3f", numbers[i]);