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

标签 c arrays function pointers struct

我在函数内部创建了一个局部结构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/

相关文章:

c - 在另一个字符集中对奇怪的字符进行 Urlen 编码

C 在 while 循环后无法完成读取程序

c - 为什么这段简单的代码不起作用?

java - 从 Java 中不断变化的 URL 解析 JSON 数组

php - 尝试回显数组时出错

c SIGINT 起作用了吗?

arrays - 删除按钮不起作用,collectionView

r - 创建函数时出错: 'recursive indexing failed'

c++ - 发送一个字符串变量作为参数来打开一个文件

php - MySQL Select 内部函数访问其他地方的变量