【问题标题】:Can deque store char* in C?deque 可以在 C 中存储 char* 吗?
【发布时间】:2017-05-07 05:59:37
【问题描述】:

我需要一个从 txt 文件中读取的字符串双端队列。它们被成功读取(我通过在 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);
}

代码有效。唯一的问题是,当我尝试打印双端队列时,所有值都是“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);

这段代码工作得很好,我的双端队列中的所有值都是正确的。

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

【问题讨论】:

  • 你总是在你的双端队列中存储相同的指针;您只是在更改它指向的内存中的内容。您不仅需要strcpy(),还需要创建一个新对象来将数据复制到其中。如果您有strdup(),那应该会有所帮助。否则,对于每个字符串,malloc()sufficient 内存到strcpy(),并将指向该空间的指针排入队列。
  • 代码有效。唯一的问题是……。这种情况的常规描述是代码不起作用

标签: c file types deque


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-01-31
    • 2017-10-17
    • 2016-06-29
    • 2011-04-05
    • 2023-02-10
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    相关资源
    最近更新 更多