I need a deque of strings read from a txt file. They are read successfully (I checked it by printing them out in while.
while ((read = getdelim(&word, &len, ' ', fp)) != -1)
{
printf("!%s\n", word);
strcpy(s, word);
printf(" read string is : %s\n", s);
deque_push_back(d,s);
}
The code works. The only thing is that when I'm trying to print the deque, all the values are "aaa", but here's the actual contents of my file: hhh aaa hfhf hhh nnn bbbb aaa bbb aaa
I tryed out to push values this way:
int i;
for (i = 0; i < 10; i++)
{
char * s = "ssss";
deque_push_back(d,s);
}
s = "llll";
deque_push_back(d,s);
This code works totally fine and all the values in my deque are correct.
I have no idea what's the problem and will be really thankfull if someone can help me.
You are storing always the same pointer in your deque; you're just changing what's in the memory to which it points. You need to not just
strcpy()
, but create a new object to copy the data into. If you havestrdup()
then that should help. Otherwise, for each string,malloc()
sufficient memory tostrcpy()
into, and enqueue the pointer to that space. – John Bollinger