使用fprintf写出一个数组

时间:2015-03-21 11:21:32

标签: c arrays

我在文本文件中编写双数组数组时遇到问题。问题是,代码运行,但没有写出任何东西。

 #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”。

1 个答案:

答案 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]);