【发布时间】: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(),并将指向该空间的指针排入队列。 -
代码有效。唯一的问题是……。这种情况的常规描述是代码不起作用。