如果我運行簡單使用的sprintf失敗
filename="heat.dat";
prtdat(u_x_length, u_y_length, u[iz],filename);
它工作正常。如果我將第一行更改爲
printf("%d",sprintf(filename,"heat.dat"));
輸出是8,然後我的程序崩潰了。爲什麼?? 我的實際目的是使用sprintf(filename,"heat%dof%d.dat",rank,numtasks)
。
如果您需要prtdat常規,這裏有雲:
void prtdat(int u_x_length, int u_y_length, float *u, char *fnam) {
int ix, iy;
FILE *fp;
fp = fopen(fnam, "w");
for (iy = 0; iy < u_y_length; iy++)
for (ix = 0; ix < u_x_length; ix++)
{
fprintf(fp, "%6.1f", *(u+iy*u_x_length+ix));
if (ix != u_x_length-1)
fprintf(fp, " ");
else
fprintf(fp, "\n");
}
fclose(fp);
}
您是否分配了由'filename'指向的內存? – chill
請說明如何聲明'filename'。 – 2012-11-29 19:10:30