scanf("%d", pointer->numeber); pointer->numeber变量前面少了 & 取变量地址
改成
scanf("%d", &pointer->numeber);
你题目的解答代码如下:
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
struct student
{
char name[20];
int numeber;
struct student *next;
};
void getInput(struct student *pointer)
{
printf("请输入姓名与学号\n");
scanf("%s", pointer->name);
scanf("%d", &pointer->numeber); // pointer->numeber 前面要加 &
}
void creat(struct student **head)
{
struct student *pointer, *temp;
pointer = (struct student *)malloc(sizeof(struct student));
if (pointer == NULL)
{
printf("内存分配失败\n");
exit(1);
}
else
getInput(pointer);
if (head != NULL)
{
temp = *head;
*head = pointer;
pointer->next = temp;
}
else
{
*head = pointer;
pointer->next = NULL;
}
}
void print(struct student *head)
{
struct student *pointer1;
int count = 1;
pointer1 = head;
while (pointer1 != NULL)
{
printf("学生%d:\n 姓名:%s\n 学号:%d\n", count, pointer1->name, pointer1->numeber);
pointer1 = pointer1->next;
count++;
}
}
int main()
{
struct student *head = NULL;
char ch;
printf("请输入学生的姓名与学号\n");
creat(&head);
printf("是否需要打印信息(Y/N)\n");
do
{
ch = getchar();
} while (ch != 'Y'&&ch != 'N');
if (ch == 'Y')
{
print(head);
}
free(head);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!