我想遍历文件对象的列表/数组:file_x,file_y,file_z,...,
在每个文件对象上调用一个函数,在 C 中。
问题
我如何创建一个函数,它将 (i) 文件对象和 (ii) 字符串作为函数的参数,然后将字符串写入该文件对象。然后,For
循环可以在文件对象列表/数组上执行该函数。
void file_write(file_object, string_to_write){
fprintf(file_object, "%s\n", string_to_write);
}
研究
我已经搜索过 Google,观看了几个 Youtube 教程的部分内容并在 SO 上搜索了相关问题,但以下是我能达到的最佳效果。任何关于如何以理想的功能更好地回答上述问题的建议,将不胜感激。
FILE *file_x, *file_y, *file_z, *file_vx, *file_vy
file_x = fopen("./data/x.dat","w");
file_y = fopen("./data/y.dat","w");
file_z = fopen("./data/z.dat","w");
file_vx = fopen("./data/vx.dat","w");
file_vy = fopen("./vy.dat","w");
fprintf(file_x, "#X(t) Coordinates\n#Time (t)\n");
fprintf(file_y, "#Y(t) Coordinates\n#Time (t)\n");
fprintf(file_z, "#Z(t) Coordinates\n#Time (t)\n");
fprintf(file_vx, "#X(t) Velocities\n#Time (t)\n");
fprintf(file_vy, "#Y(t) Velocities\n#Time (t)\n");
fclose(file_x);
fclose(file_y);
fclose(file_z);
fclose(file_vx);
fclose(file_vy);
声明一个 FILE 指针,然后可以声明两个数组,一个用于文件名,一个用于要写入文件的数据。创建一个循环并像这样迭代:
int main(void)
{
FILE *file_x;
const char *dirs[] = { "./data/x.dat",
"./data/y.dat",
"./data/z.dat",
"./data/vx.dat",
"./vy.dat"
};
const char *data[] = { "#X(t) Coordinates\n#Time (t)\n",
"#Y(t) Coordinates\n#Time (t)\n",
"#Z(t) Coordinates\n#Time (t)\n",
"#X(t) Velocities\n#Time (t)\n",
"#Y(t) Velocities\n#Time (t)\n",
};
for( int n = 0 ; n < 5 ; n++ )
{
file_x = fopen(dirs[n],"w");
if ( !file_x )
{
perror(dirs[n]);
exit(EXIT_FAILURE);
}
fprintf(file_x , "%s" , data[n]);
fclose(file_x);
}
return 0;
}
我是一名优秀的程序员,十分优秀!