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