我想使用或打印應該包含文件中某個字節的指針dp的值,但它說:「段錯誤(核心轉儲)」另外,如果我想打印「m」或「n」我得到相同的錯誤信息。我怎樣才能使用指針m,n,dp的值?我只是將%s更改爲%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( 「印刷......%F \ n」,* DP);與相同的分段錯誤消息。
除了使用(可能)未初始化的指針,當它是雙精度型(格式爲%f')時,它將以字符串形式打印(格式爲'%s')。 – 2012-03-12 08:06:34
向我們展示了'read_file'的實現。特別是你如何使用'dpp'。 – Naveen 2012-03-12 08:07:07
爲什麼你從'read_file()'中刪除所有內容?它正在做什麼可能會告訴答案如何處理傳遞給它的參數。另外,有一個很好的機會,那裏有東西需要修復。 – 2012-03-12 08:08:44