파일에서 특정 바이트를 포함 할 것으로 예상되는 포인터 dp의 값을 사용하거나 인쇄하려고하지만 다음과 같이 말합니다. "세그먼트 오류 (코어 덤프 됨)" 또한 원하는 경우 "m"또는 "n"을 인쇄하면 같은 오류 메시지가 나타납니다. 포인터 m, n, dp의 값을 어떻게 사용할 수 있습니까? % f을 % f (으)로 바꿨습니다.C에서 포인터 값 사용 또는 인쇄
감사
#include <stdio.h>
#include <stdlib.h>
void read_file(char * s, int * mp, int * np, double ** dpp)
{
int m, n ;
double * dp ;
FILE * fp ;
fp = fopen (s, "r") ;
if (fp == NULL) {
fprintf(stderr,"read_file(): Unable to open file '%s'\n", s) ;
exit(12) ;
}
fread(&m, sizeof(int), 1, fp) ;
fread(&n, sizeof(int), 1, fp) ;
/* printf("m = %d, n = %d\n", m, n) ; */
dp = (double *) malloc(m * n * sizeof(double)) ;
if (dp == NULL) {
fprintf(stderr,"read_file(): malloc failed for %d bytes on file '%s'\n", m*n*sizeof(double), s) ;
exit(13) ;
}
fread(dp, sizeof(double), m*n, fp) ;
fclose (fp) ;
*mp = m ; *np = n ;
*dpp = dp ;
}
int main()
{
char *s="g.dat";
int *m;int *n;
double *dp;
read_file(s,m,n,&dp);
printf("it crashes here... %f\n",*dp);
}
의 printf가 ON ("인쇄 ... %의 F \ 없음"* DP)에 충돌; 동일한 분할 오류 메시지가 표시됩니다.
(초기화되지 않은) 포인터를 사용하는 것 외에도 double (형식'% f') 인 경우이를 문자열 ('% s '형식)로 인쇄합니다. –
은'read_file'의 구현을 보여줍니다. 특히'dpp '를 어떻게 사용하고 있는지. – Naveen
왜'read_file()'에서 모든 것을 제거 했습니까? 그것이하는 일은 전달 된 매개 변수를 처리하는 방법에 대한 대답을 알리는 것입니다. 또한, 거기에 거기에 고정 필요가 좋은 기회가있어. –