添加大括号后,文件输出不正确

时间:2016-04-04 13:46:12

标签: c

我不是C程序员,我只是想从一个代码中获取信息。所以我的修改后的代码就在这里 http://pastebin.com/XYZXqzEW

唯一的区别是我想将索引打印到f文件中。首先我有打开文件

 FILE *f;
 f = fopen("new2.txt", "a");

后者我在fprintf

周围加了大括号
   if (xflg){
          index = m * nxy + l*nx + k;
          fprintf(f,"%5d\n",index);
  } else {
      index = m * nxy + k*ny + l;
       vel[index] = velocity;

原始版本

 for (l=0; l<ny; l++)
            {
           if (xflg)
                  index = m * nxy + l*nx + k;
           else
              index = m * nxy + k*ny + l;
               vel[index] = velocity;
/*               fprintf(stdout,"%.1f %.1f %.1f ", this_z, this_x, velocity); */
            }
         }
      }
   }

第221行是fwrite声明

yes = fwrite(vel, nxyz*sizeof(float), 1, f1_out);

当我编译并运行代码时,我得到了带有全零的base.mod(输出文件)。为什么?

1 个答案:

答案 0 :(得分:1)

你可能想要这个:

for (l=0; l<ny; l++)
{
  if (xflg)
    index = m * nxy + l*nx + k;
  else
    index = m * nxy + k*ny + l;

  vel[index] = velocity;

  fprintf(f,"%5d\n",index);  //<<< line added

  /* fprintf(stdout,"%.1f %.1f %.1f ", this_z, this_x, velocity); */
}

或者这个:

for (l=0; l<ny; l++)
{
  if (xflg)
  {                                   //<<< brace added
    index = m * nxy + l*nx + k;
    fprintf(f,"%5d\n",index);         //<<< line added
  }                                   //<<< brace added
  else
    index = m * nxy + k*ny + l;

  vel[index] = velocity;
  /* fprintf(stdout,"%.1f %.1f %.1f ", this_z, this_x, velocity); */
}

我刚刚添加了fprintf行而没有任何大括号。

你的代码缩进很差,这也是你遇到困难的原因之一。

这是您的原始代码,与上面的代码完全相同,但没有fprintf(f,"%5d\n",index);

 for (l=0; l<ny; l++)
            {
           if (xflg)
                  index = m * nxy + l*nx + k;
           else
              index = m * nxy + k*ny + l;
               vel[index] = velocity;
/*               fprintf(stdout,"%.1f %.1f %.1f ", this_z, this_x, velocity); */
            }

我希望你现在明白“糟糕的缩进”是什么意思,以及为什么正确的缩进很重要。