실패합니다. 첫 번째 줄을간단한 사용
printf("%d",sprintf(filename,"heat.dat"));
으로 변경하면 출력이 8이되고 프로그램이 중단됩니다. 왜?? 내 실제 목표는 sprintf(filename,"heat%dof%d.dat",rank,numtasks)
입니다. 당신이 prtdat 루틴을해야하는 경우
, 여기 간다 :
filename="heat.dat";
는 filename
가 [const] char *
포인터 제안
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'을 어떻게 선언하는지 보여주십시오. –