可以deque在C中存储char *吗?

时间:2016-12-21 18:01:43

标签: c file types deque

我需要从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);

此代码完全正常,我的双端队列中的所有值都是正确的。

我不知道问题是什么,如果有人可以帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:0)

您始终在双端队列中存储相同的指针;您只是在更改它指向的内存中的内容。您不仅需要strcpy(),还需要创建一个新对象来将数据复制到其中。如果您有strdup(),那应该会有所帮助。否则,对于每个字符串,malloc()有足够的内存strcpy()放入其中,并将指针排队到该空间。                     –约翰·波林格