C - Доступ к переменной структуры из разных функций - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь объявить переменную (struct typeed) в функции и манипулировать ею (чтение / запись) из других функций.Однако, когда я пытаюсь использовать эту переменную в любой функции, которая не там, где я ее объявил, она содержит только мусор.

Это мой код:

    #include <stdio.h>
    #include <stdlib.h>

    typedef struct
      char name[25];
      int roll;
      float marks;  
    }Student;

    void getInfo(Student student);
    void display(Student student);

    int main(int argc, char *argv[]) {
      Student student;
      getInfo(student);
      display(student);
      return 0;
    }

    void getInfo(Student student){
      printf("Enter student's name: \n");
      scanf("%s", &student.name);
      printf("Enter student's roll: \n");
      scanf("%d", &student.roll);
      printf("Enter student's grade: \n");
      scanf("%f", &student.marks);
    }

    void display(Student student){
      printf("NAME: %s\n", student.name);
      printf("ROLL: %d\n", student.roll);
      printf("GRADE: %.2f\n", student.marks);
    }

1 Ответ

0 голосов
/ 03 марта 2019

Вы должны передать свою структуру по ссылке (& оператор)

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    char name[25];
    int roll;
    float marks;    
} Student;

void getInfo(Student *student);
void display(Student *student);

int main(int argc, char *argv[]) {
    Student student;
    getInfo( &student );
    display( &student );
    return 0;
}

void getInfo(Student *student){
    printf("Enter student's name:");
    scanf("%s", student->name);
    printf("Enter student's roll:");
    scanf("%d", &student->roll);
    printf("Enter student's grade:");
    scanf("%f", &student->marks);
}

void display(Student *student){
    printf("NAME: %s\n", student->name);
    printf("ROLL: %d\n", student->roll);
    printf("GRADE: %.2f\n", student->marks);
}

Демо: https://repl.it/repls/LowNonstopWeb

...