c - C - 当程序到达某个方法时,它就结束了,这是为什么呢?
问题描述
所以我正在编写一个程序,它有一个选择菜单,用户可以从中选择他们可以插入、计数、打印、删除和修改节点的位置。用户还有第六个选项可以退出程序。我的问题是,每当用户选择第 5 个选项,即修改学生节点时,程序就会突然结束,而不是返回菜单。为什么会这样,我该如何解决?
这是无法正常工作的修改功能:
void modifyStudentNode()
{
int id = 0;
struct student *ptr, *prev, *currPtr;
if(start==NULL)
{
printf("\nStudent List does not contain data\n");
}
else
{
printf("\nPlease enter the student ID of the student whose records you wish to modify: \n");
scanf("%d",&id);
fflush(stdin);
for(currPtr = start; (currPtr)&&((currPtr->student_id)!= id); prev = currPtr, currPtr = currPtr->next);
if(currPtr == NULL)
printf("\nStudent not Found\n");
else
{
printf("\nCurrent values for Student Id %d are: ", id);
printf("Student Name: %s\n", currPtr->student_name);
printf("Student GPA: %.2f\n", currPtr->gpa);
printf("Student Date of Registration: %d/%d/%d\n\n", currPtr->dt_of_reg.month,currPtr->dt_of_reg.day,currPtr->dt_of_reg.year);
printf("\nEnter modified values for Student Id %d: \n", id);
printf("Enter Student's Modified Name:\n");
scanf("%[^\t\n]s",&currPtr->student_name);
fflush(stdin);
printf("Enter Student's Modified GPA:\n");
scanf("%f",&currPtr->gpa);
fflush(stdin);
printf("Enter Student's Modified Date of Registration (mm/dd/yyyy):\n");
scanf("%d/%d/%d", &currPtr->dt_of_reg.month,currPtr->dt_of_reg.day,currPtr->dt_of_reg.year);
fflush(stdin);
}
}
}
解决方案
你的线
scanf("%d/%d/%d", &currPtr->dt_of_reg.month,currPtr->dt_of_reg.day,currPtr->dt_of_reg.year);
应该
scanf("%d/%d/%d", &currPtr->dt_of_reg.month, &currPtr->dt_of_reg.day, &currPtr->dt_of_reg.year);
您忘记&
为最后两个数字添加 。
推荐阅读
- apache-spark - 使用 Windows env 在分布式集群上运行的 Spark 作业抱怨无法删除临时文件夹之一
- c# - 将字符串转换为 ReadOnlyMemory
在 C# 中? - azure-active-directory - Azure AD MFA 可以与本地 Active Directory 一起使用吗?
- reactjs - 何等待 fetch 直到 redux 状态可用?
- mysql - sql中的累计总数
- javascript - 如何多次调用一个函数,纯JS
- next.js - getStaticProps 是否在服务器上运行?
- javascript - 正在搜索产品代码,但代码中包含字母
- python - 通过从现有数据框中过滤字符来创建新数据框
- javascript - ChartJs条形图条形值在pdf中显示低于Y轴值?