我有这段代码,我不知道为什么这不起作用?inputData()函数似乎起作用,但是print方法仅将我发送到inputDate()的第一行打印为我已输入的尽可能多的行。
我从一个文件中一次读取一行,然后放入链接列表中,这就是问题所在。如果我在代码中传递值,那么没有问题吗?
//LINKED LIST
void inputData(char *l)
{
struct lines *pNewStruct = (struct lines *) malloc(sizeof(struct lines));
pNewStruct->line = l;
//inserts if list empty, next set to null
if(pFirstNode == NULL){
pNewStruct->next = NULL;
pFirstNode = pLastNode = pNewStruct;
} else {
//inserts if list contains one element
//this is done to differentiate between first and last node
if(pFirstNode == pLastNode) {
pFirstNode->next = pNewStruct;
pLastNode = pNewStruct;
pNewStruct->next = NULL;
//inserts elements when elements in list > 2
} else {
pLastNode->next = pNewStruct;
pNewStruct->next = NULL;
pLastNode = pNewStruct;
}
}
}
void printData()
{
struct lines *temp = pFirstNode;
while(temp != NULL)
{
printf("%s", temp->line);
temp = temp->next;
}
}
对于每行,您应该动态分配新的内存,并将每行的内容复制到新分配的字符串中。否则,如果没有人跟踪为这些字符串分配的内存,或者这些字符串在堆栈中,则可能会丢失它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句