我在函数内部创建了一个局部结构student c,如何将student c从函数返回到main function中的student 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;
}
最佳答案
您的问题:
how to return struct variable from a function in c programming?
与您的代码不匹配。
在您的代码中,您尝试返回一个单个结构成员(即c.name
)而不是整个结构。由于 struct 成员是一个 char 数组(似乎用作字符串),你会得到很多错误,因为你不能使用 =
分配字符串变量(又名 char 数组变量)运营商。
如果您真的想返回一个结构,只需执行以下操作:
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
关于c - 如何从 C 编程中的函数返回结构变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55428848/