首页 > 解决方案 > 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;
}

标签: cfunction

解决方案


Scanf 错误:您需要&从函数scanf中删除alegereStudent才能读取- 您需要了解数组和指针stud.numeStudentstud.prenumeStudent另外,您需要包含<stdio.h>;放在return 0.

错误原因:数组衰减为指针,scanf需要一个指针来读取用户输入到变量中,因此不需要将&.

建议:http ://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html


推荐阅读