我不是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(输出文件)。为什么?
答案 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); */
}
我希望你现在明白“糟糕的缩进”是什么意思,以及为什么正确的缩进很重要。