Как вернуть структурную переменную из функции в C программирования? - PullRequest
1 голос
/ 30 марта 2019

Я создал локальную структуру ученика c внутри функции, как вернуть студента c из функции ученику d в основной функции?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
     char name[10];
}a,b;
struct student name(struct student *ptr)
{
    struct student c; 
    strcpy(c.name,ptr->name);
    return c.name;    //error
}
int main()
{
    printf("enter name");
    scanf("%c",&a.name);
    b.name=name (&a.name);   //error
    printf("%c",b.name);
    return 0;
}

1 Ответ

1 голос
/ 30 марта 2019

Ваш вопрос:

как вернуть struct переменную из функции в c-программировании?

не соответствует вашему коду.

В вашемкод, который вы пытаетесь вернуть один элемент структуры (т.е. c.name), но не всю структуру.Поскольку член структуры является массивом символов (для использования в виде строки, кажется), вы получаете много ошибок, потому что вы не можете назначать строковые переменные (или переменные массива символов) с помощью оператора =.

Если вы действительно хотите вернуть структуру, просто выполните:

struct student name(struct student *ptr)
{
    struct student c; 
    strcpy(c.name,ptr->name);
    return c;    // Just use c instead of c.name;
}

, и вызов из main будет:

b = name(&a);

BTW:

scanf("%c",&a.name);

неправильно.Я предполагаю, что вы хотите прочитать слово, а не просто символ, поэтому %s - это спецификатор для использования.Например: scanf("%9s", a.name);

Обратите внимание, что scanf с %s позволяет сканировать только 1 слово.В качестве имени может быть несколько слов, которые вы можете использовать вместо fgets.

Это также относится к printf, т.е. используйте %s вместо %c

...