我正在编写一个打印链接列表的小程序。该列表包含一个字符串和一个指向下一个节点的指针。
我将链表传递给添加新节点并填充数据字段的函数。
当我回到主函数并尝试打印列表内容时,我得到分段错误错误,尽管从函数 add_node 我可以打印节点的内容。
我希望能够将列表和字符串传递给函数,并且函数必须使用我传递的字符串将新节点添加到列表中。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
char filename[25];
struct node *next;
};
typedef struct node LISTNODE;
typedef LISTNODE *LISTNODEPTR;
void add_node(LISTNODEPTR *nFile, char *chaData);
int main (int argc, char *argv[])
{
LISTNODEPTR nFile = NULL;
printf("Printing list\n");
add_node(&nFile, "file.txt");
printf("%s\n", nFile->filename);
free(nFile);
return 0;
}
void add_node(LISTNODEPTR *nFile, char *chaData)
{
LISTNODEPTR head = *nFile;
LISTNODEPTR newNode;
newNode = (LISTNODEPTR) malloc(sizeof (struct node));
strcpy(newNode->filename, chaData);
printf("%s\n", newNode->filename);
newNode->next = head; //link next. newNode next points to head (beginning of the list). At this time (head & newNode)->2nd->3rd->NULL
head = newNode;
}
输出:打印列表文件.txt 分段错误
操作系统:Linux sisdvb02 2.6.35-28-server #49-Ubuntu SMP Tue Mar 1 14:55:37 UTC 2011 x86_64 GNU/Linux
编译器:gcc -Wall -o list list.c