gpt4 book ai didi

c - 简单链表C代码段错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:49 26 4
gpt4 key购买 nike

我正在为我的基本 C 作业制作链表程序。但是,我总是会在 .exe 上遇到强制关闭错误并在 Ubuntu 上遇到段错误。

我试图将其分解并重写,但我不知道代码哪里出错了。

非常感谢您的帮助。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


struct node{
char name[20];
int mark;
struct node *next;

};

struct node *addnode(char name[], float mark);


int main(void){

int j = 0;
char StdName[10];
float StdMarks;

struct node *head = NULL;
struct node *curr = NULL;

head = curr = addnode('\0',0.0);

for(j=0; j<3; j++){

printf("\nEnter StdName >>");

printf("\nMarks for %s >>", StdName);


curr -> next = addnode("", 5.5);
curr = curr->next;
}

curr = head -> next;

j = 0;

printf("\nnode\tName\tMarks");

while(curr){

printf("\n%d\t%s\t%5.2f", j++, curr->name, curr->mark);
curr=curr->next;
}

return 0;

}

struct node *addnode(char name[], float mark){

struct node *temp;

temp=(struct node*)malloc(sizeof(struct node));
strcpy(temp->name,name);
temp->mark=mark;
temp->next=NULL;

return (temp);
}

最佳答案

一些错误:

  • '\0' 不是 char[],而是 char,其值为 0 并且转换为 char*(NULL 指针)。使用 "" 作为空字符串。编译器应该为此发出警告。以最高警告级别编译并将警告视为错误(因此您不能忽略它们)。对于 gcc,标志是 -Wall -Werror
  • StdName 未初始化且从未填充,但在 printf("%s") 调用中使用。

关于c - 简单链表C代码段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com