c - C: error in calling struct function in main
问题描述
Do you have any idea why the scanf in alegereStudent doesn't work? The console let me write random things, in empty lines and is showing random numbers after the printf. I'm trying to do a beginner project but I don't know why this struct won't let me do the scanf as I want.
Code:
#include<stdio.h>
struct student
{
char numeStudent[20];
char prenumeStudent[20];
int idStudent;
float medieAdmitere;
};
struct profesor
{
char *numeProfesor[20];
char *prenumeProfesor[20];
char *domeniu[20];
};
void alegereStudent( struct student stud){
printf("Introduceti Numele: %s", stud.numeStudent);
scanf("%s\n",&stud.numeStudent);
printf("Introduceti Prenumele:%s",stud.prenumeStudent);
scanf("%s\n",&stud.prenumeStudent);
printf("Introduceti ID-ul studentului:%d",stud.idStudent);
scanf("%d\n",&stud.idStudent);
printf("Introduceti Media de admitere:%f",stud.medieAdmitere);
scanf("%f\n",&stud.medieAdmitere);
};
int main(void)
{
int intrDate=0,cautDate=0,listDate=0,iesire=0,desprStudenti=0,desprProfesori=0,inapoi=0;
struct student stud;
printf("Meniu principal:\n\n");
printf("1.Introducere date. %d\n",intrDate);
printf("2.Cautare date.%d\n",cautDate);
printf("3.Listare date.%d\n",listDate);
printf("0.Iesire Aplicatie.%d\n",iesire);
printf("Alegeti o optiune:");
scanf("%d,%d,%d,%d",&intrDate,&cautDate,&listDate,&iesire);
if(intrDate==1){
printf("1. Despre studenti %d\n",desprStudenti);
printf("2. Despre profesori\n");
printf("3. Revenire la meniul principal\n");
printf("Alegeti o optiune:");
scanf("%d",&desprStudenti);
}
if(desprStudenti==1)
alegereStudent(stud);
return 0;
}
解决方案
Scanf 错误:您需要&
从函数scanf
中删除alegereStudent
才能读取- 您需要了解数组和指针stud.numeStudent
。stud.prenumeStudent
另外,您需要包含<stdio.h>
并;
放在return 0
.
错误原因:数组衰减为指针,scanf
需要一个指针来读取用户输入到变量中,因此不需要将&
.
建议:http ://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
推荐阅读
- git - 如何使用命令行 git 接受来自 Github 的拉取请求(PR)
- python - 如何从我创建的选项菜单中获取所有选定的选项并将其放入列表中?
- python - 在python中使用各种键盘模块不按住键
- java - 有谁知道为什么我在进入登录屏幕后无法按菜单按钮?
- python-3.x - Python工厂,可以逐步指定对象参数的地方?
- sql - 同一列上的多个 SQL 过滤器
- php - 由于未捕获的 TypeError,如何创建空数组:无法读取 null 的属性“长度”
- html - 有没有办法让 flexbox 适合屏幕?
- rcpp - 我在 R 包中使用 Rcpp 和降雪的函数比不在包中的要慢
- java - 在 Windows 上从 Internet 访问 Jenkins