у меня есть проблема с назначением буквы переменной переменной структуры с помощью функции - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь присвоить букву переменной char структуры, но я получаю вывод мусора, я не знаю, почему такой простой код не работает. Я не смог найти ответы в интернете

Я уже использовал strcpy или просто scanf, но это не работает.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct test
{
    int age;
    char name[15];

};
void reg(struct test a)
{
    //scanf("%s",&a.name);
    //strcpy(a.name,"Eldar");
}
int main()
{
    struct test el,*elp;
    elp=&el;
    reg(el);
    printf("%s",el.name);
}

Я получаю странные символы, но не мое письмо

1 Ответ

6 голосов
/ 23 мая 2019

Вы передаете структуру по значению.Чтобы изменить структуру в функции, вам нужно передать адрес структуры.См. Код ниже.

void reg(struct test *a)
{
    scanf("%s",a->name);
}
int main()
{
    struct test el,*elp;
    elp=&el;
    reg(elp);  // or reg(&el);
    printf("%s",el.name);
}
...