考虑代码:
#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成员时,我会做其他的事情。
答案 0 :(得分:0)
至于你的问题(据我所知),它确实无法完成。考虑使takeString
函数只接受一个字符串参数,并将输入读入该字符串。
然后将正确的字符串从数组和结构传递给函数。这可以通过另一个函数来完成,该函数将指针(或索引)带到要读取的结构中。
也许像这样的伪代码:
void takeString(char *string)
{
scanf("...", string);
}
void takeStructure(int arrayIndex)
{
...
takeString(gifts[arrayIndex].city);
...
}