這是我想做的事:試圖將文本文件數據讀入結構數組中?
- 閱讀我的2個文本文件到「結構的數組」(這是它如何措辭上我的任務)。
typedef struct { int eventid; char eventdate[20]; char venuename[20]; char country[20]; int rockid; } Venue;
在我的主要功能我有陣列設置接收:
- 動態地從文件
這裏是我一起工作的結構的一個讀取每個條目提供充足的內存文本爲:
Venue *(places[20]);
現在出現更復雜的部分。我需要打開文件進行閱讀(我完全理解了這一點),然後爲每個條目動態分配內存。我知道我需要使用malloc來做到這一點,但我從來沒有使用過它,有點不知所措。這是我到目前爲止:
void load_data(void)
{
char buffer[20]; //stating that each line can't be longer than 20 chars
int i = 0,len; //declaring 2 int variables
FILE * venuePtr=fopen("venueinfo.txt", "r");
if (venuePtr != NULL)
printf("\n**Venue info file has been opened!**\n");
else{
printf("\nPlease create a file named venueinfo.txt and restart!\n");
} //so far so good...
while (!feof(venuePtr)){ //while we have not found the eof key...
fscanf(venuePtr,"%s",buffer); //we scan each line of text
len = strlen(buffer); //find the length (len) of the string
places[i]=(char*)malloc(len+1); //allocate memory space for the word here
strcpy(places[i],buffer); //copy a word into our array
++i; //finally we move on to the next element in the array
} //end while
問題存在於while循環,我一直在這工作了2天直。我有5個成員在我的結構中,我認爲strcpy可能無法正常工作。儘管我確信這只是問題的一部分。我無法將所有東西都包在頭上。該文件本身是一個超級簡單的txt文件,如下所示:
1 Jan10 Citadel Belgium 8
4 May05 Sunrise Belize 6
3 Jun17 Footloose Brazil 4
如果你會說出你期望發生的事情,以及你不想要發生的事情,這將有所幫助。 – qaphla
您需要考慮的事項是:數據如何存儲在您的文件中?它是在分隔的領域?數據的格式是什麼?確定之後,您需要考慮使用strtok的sscanf來解析數據,並將其複製到您的結構字段中。 – Baldrick
更新了我的文章。謝謝。 – user2884601