如何在C编程中从函数返回结构变量?

时间:2019-03-30 06:33:56

标签: c arrays function pointers struct

我在函数内部创建了一个局部结构的学生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 个答案:

答案 0 :(得分:1)

您的问题:

  

如何在C编程中从函数返回结构变量?

与您的代码不匹配。

在您的代码中,您尝试返回一个单个结构成员(即c.name),而不是整个结构。由于struct成员是char数组(似乎用作字符串),您会遇到很多错误,因为i C无法使用=运算符分配字符串变量(也就是char数组变量)。 / p>

如果您真的想返回一个结构,只需执行以下操作:

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);

顺便说一句:

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

是错误的。我假设您想读一个单词-不仅仅是一个字符-因此%s是要使用的说明符。像:scanf("%9s", a.name);

请注意,scanf%s仅允许扫描1个单词。您可以使用fgets来代替几个单词。

这也适用于printf,即使用%s代替%c