2
這是我的新問題,因爲我是如此新手!!! :)在函數中設置指針的pterter指針的成員
我有這樣一個文本文件:
3
55.33 44.27 STN1
77.26 33.44 STN2
22.11 23.12 STN5
我想在C閱讀。
所以我已經在文件頭定義的結構賦予read_stn.h對於像文件:
#include <stdio.h>
#include <sys/file.h>
typedef struct station
{
double lat, lon;
char name[5];
} station;
並嘗試使用以下代碼
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "read_stn.h"
void read_stn(char filename[], station **sta,int *station_no)
{
FILE *fp;
int i;
char sta_str[5];
float longitude, latitude;
fp = fopen(filename,"r");
fscanf(fp,"%d",station_no);
printf("%d\n", *station_no);
*sta = (station*)malloc(*station_no*sizeof(station *));
for(i=0;i<*station_no;i++)
{
fscanf(fp,"%f %f %s", &longitude, &latitude, sta_str);
printf("%f %f %s\n", longitude, latitude, sta_str);
sta[i]->lon=(double)longitude;
sta[i]->lat=(double)latitude;
strcpy(sta[i]->name,sta_str);
}
fclose(fp);
}
和主程序讀取文件:
#include <stdio.h>
#include <stdlib.h>
#include "read_stn.h"
int main()
{
station *sta;
int i,stn_no;
read_stn("station.dat",&sta,&stn_no);
for(i=0;i<stn_no;i++)
{
printf("%d %s %f %f\n",i+1, sta[i].name, sta[i].lon, sta[i].lat);
}
free(sta);
return 1;
}
但是當我試圖讀取文件時,我得到了分段核心轉儲。我的文件中是否有錯誤?我認爲在定義指針成員賦值的指針時出現錯誤。你能幫我嗎?
+1,爲全面解決整個問題 – fayyazkl
非常感謝您 –
不客氣,很好的問題,這是一個典範[SSCCE](http://sscce.org/)。 –