这是我想做的事情:
- 将我的 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