函数定义

时间:2016-12-21 14:32:25

标签: c struct

考虑代码:

#define STRINGMAX 50

struct GIFTS {
    char whofor[STRINGMAX];
    char city[STRINGMAX];
    float weight;
    struct DIMENSIONS {
        float width;
        float length;
        float height;
    } dim;
} gifts[STRINGMAX];

功能定义:

void takeString(char * structvar, char structarr[], int arrpos) {
    while (scanf("%[^\n]%*c]", structarr[arrpos].structvar) != EOF) {
        scanf("%[^\n]%*c]", structarr[arrpos].structvar);
    }

}

它给了我一个错误:

  

请求成员'structvar'不是结构或联合

在这种情况下,有没有办法传递struct成员?我在这里看到了一些关于这样做的类似主题,但我无法将这些想法引入我的代码中(我是一个完整的C初学者)。 我将不胜感激,特别是代码中的一个明显例子。

顺便说一下。我知道我不应该使用scanf,但它仅仅是例如。当我知道如何在函数参数中传递struct成员时,我会做其他的事情。

1 个答案:

答案 0 :(得分:0)

至于你的问题(据我所知),它确实无法完成。考虑使takeString函数只接受一个字符串参数,并将输入读入该字符串。

然后将正确的字符串从数组和结构传递给函数。这可以通过另一个函数来完成,该函数将指针(或索引)带到要读取的结构中。

也许像这样的伪代码:

void takeString(char *string)
{
    scanf("...", string);
}

void takeStructure(int arrayIndex)
{
    ...
    takeString(gifts[arrayIndex].city);
    ...
}