【发布时间】:2026-01-31 20:05:01
【问题描述】:
我正在尝试将值(文件路径的字符数组)添加到链接列表。我不断从我的 _add 函数中得到一个 Seg 错误,我不知道如何修复它。我尝试了许多不同的方法来编写函数,但我一无所获。答案似乎很简单,我就是不明白。这是我的 _add 函数代码:
typedef struct cplist {
char *path;
int cpid;
time_t tv_sec;
suseconds_t tv_usec;
struct cplist *next;
} cplist;
cplist *cpl_add(cplist *head, char *path){
cplist *current = head;
while(current->next != NULL){
current = current->next;
}
current->next = (cplist*) malloc(sizeof(cplist));
current->next->path = path;
current->next->next = NULL;
}
这是我在主程序中的代码。我正在读取一个可选的“-v”标志,然后是一个整数,然后是必须添加到链表的路径:
int main(int argc, char* argv[]){
int i, j;
char *p;
char *key;
cplist *head = NULL;
for(i = 0; i < argc; i++){
if(strcmp(argv[1], "-v") == 0){
key = argv[2];
for(j = 3; j < argc; j++){
p = argv[j];
cpl_add(head, p);
}
} else {
key = argv[1];
for(j = 2; j < argc; j++){
p = argv[j];
cpl_add(head, p);
}
}
}
【问题讨论】:
-
注意:
sizeof(head)是头指针的大小,而不是结构的大小。你应该使用sizeof(cplist)。 -
你是对的。我会确保编辑它
标签: c linked-list segmentation-fault