I'm having a lot of difficulty doing this! What I do is get the first line to initialize an array of pointers, then want to point those blocks to variables that contain the string from the text document. However; even when I read all the values into the array they are all pointing to the same variable which changes as the file is being read. Is there way I can copy those values into the array without them all pointing to the changing line as the file is being read?
int main(void){
FILE * fp;
char line[256];
int i = 0;
int digit = 0;
fp = fopen("testfile","r");
if(fp == NULL){
printf("Cannot Open File");
}
fgets(line,sizeof(line),fp);
digit = atoi(line);
printf("digit = %d\n",digit);
char *rest[digit];
while(!feof(fp)){
while (i < digit){
fgets(line,sizeof(line),fp);
fgets(line,sizeof(line),fp);
printf("line = %s",line);
char arr[sizeof(line)+1];
strcpy(arr,line);
rest[i] = arr;
printf("restaurant = %s",rest[i]);
i++;
}
the text file is as follows:
6
Outback Steakhouse
Red Robin
Max & Erma’s
Chipotle
Panera
BW3
8
Stephanie 5 3 2 4
Chris 4 6 5 1
Peter 5 2 4 1
Josh 1 4 3 6
Jessica 5 2 3 4
Al 6 4 2 3
Adam 5 1 3 2
Eric 1 4 3 5
rest[i] = arr;That just points each entry in the array to the same buffer. So of course the result is the same string for every entry. You need to allocate seperate memory buffers for each string.