C 使用fprintf写出数组

C 使用fprintf写出数组,c,arrays,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("o

我在文本文件中写入双精度数字数组时遇到问题。问题是,代码会运行,但不会写出任何内容

 #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;
 }
#包括
#包括
int main(){
归档;
双数[30];
int i=0;

对于(i;i您忘记将
i
重新初始化为0,因此
i
的当前值为30,这有效地导致
while
循环无法执行


您忘记将
i
重新初始化为0,因此
i
的当前值为30,这实际上会导致
while
循环不执行


您忘记将
i
重新初始化为0,因此
i
的当前值为30,这实际上会导致
while
循环不执行


您忘记将
i
重新初始化为0,因此
i
的当前值为30,这实际上会导致
while
循环不执行



你能添加标记“C”吗?你忘了在第一个循环后将i设置回零。是的,添加i=0;在while前面(i<30)在这种情况下,使用“for”-比while循环更好。重置
i
。在
scanf
周围使用大括号,并检查返回值哇,嗯,是的,它工作了,我很尴尬……你能添加标记“C”吗?你忘记在第一个循环后将i设置回零。是的,添加i=0;在while之前(i<30)在这种情况下,使用“for”-比while循环更好。重置
i
。在
scanf
周围使用大括号,并检查返回值哇,嗯,是的,它工作了,我很尴尬……你能添加标记“C”吗?你忘记在第一个循环后将i设置回零。是的,添加i=0;在while之前(i<30)在这种情况下,使用“for”-比while循环更好。重置
i
。在
scanf
周围使用大括号,并检查返回值哇,嗯,是的,它工作了,我很尴尬……你能添加标记“C”吗?你忘记在第一个循环后将i设置回零。是的,添加i=0;在while之前(i<30)在这种情况下,使用“for”-比while循环更好。重置
i
。在
scanf
周围使用大括号,并检查返回值哇,嗯,是的,它工作了,我很尴尬。。。。。
 i = 0; //Re-initialise i.
 while ( i<30 ) {

         fprintf(out, "%.3f", numbers[i]);
         i++;
     }
for (i = 0; i < 30; ++i)
     fprintf(out, "%.3f", numbers[i]);