
如图所示,当分次往程序中输入学生信息后再输出,两次输入的信息输出信息之间会有一个意义不明的“0 0.00”
纯新人,先前只学过一点c/c++和python,想学着在c中那样在go中利用链表的形式创建一个学生管理系统,结果只到输出环节就翻车了
以下是关于输入/输出的相关代码:
package main
import(
"fmt"
"os"
)
func Add(head *student) *student{ //输入学生信息
var(
p *student = nil
pr *student = nil
num string
Name string
Sex byte
Age int
Score float64
)
fmt.Println("开始录入学生信息:")
fmt.Println("请按照学号、姓名、性别、年龄、成绩的顺序录入:")
for true{
p = new(student) //申请内存
if p == nil{
fmt.Println("不够内存!")
os.Exit(1)
}
if head == nil{
head = p //若 头指针 为 空,则头指针指向 新申请内存空间p
}else{
pr = head
for pr.next != nil{
pr = pr.next
}
pr.next = p
}
fmt.Scan(&num)
if num == "-1"{
fmt.Println("录入结束!")
p = nil
break
}
fmt.Scanf("%s %c %d %f",&Name,&Sex,&Age,&Score)
p.number = num
p.name = Name
p.sex = Sex
p.age = Age
p.score = Score
p.next = nil
People ++
}
fmt.Println("录入成功!")
return head //返回
}
package main
import (
"fmt"
)
func Print_(head *student){ //输出学生信息
if head == nil{
fmt.Println("你的学生信息表单为空!")
return
}
var pr = head
for pr.next != nil{
fmt.Printf("%s %s %c %d %.2f\n",pr.number,
pr.name,pr.sex,pr.age,pr.score)
pr = pr.next
}
}
求大神援助(😭