我需要从txt文件中读取字符串的deque。它们被成功读取(我通过打印它们来检查它。
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);
}
代码有效。唯一的一点是,当我尝试打印双端队列时,所有值都是“aaa”,但这是我文件的实际内容: hhh aaa hfhf hhh nnn bbbb aaa bbb aaa
我试着以这种方式推动价值观:
int i;
for (i = 0; i < 10; i++)
{
char * s = "ssss";
deque_push_back(d,s);
}
s = "llll";
deque_push_back(d,s);
此代码完全正常,我的双端队列中的所有值都是正确的。
我不知道问题是什么,如果有人可以帮助我,我会非常感激。
答案 0 :(得分:0)
您始终在双端队列中存储相同的指针;您只是在更改它指向的内存中的内容。您不仅需要strcpy()
,还需要创建一个新对象来将数据复制到其中。如果您有strdup()
,那应该会有所帮助。否则,对于每个字符串,malloc()
有足够的内存strcpy()
放入其中,并将指针排队到该空间。
–约翰·波林格