考虑代码:
#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);
}
}
它给了我一个错误:
request for member ‘structvar’ in something not a structure or union
在这种情况下有什么方法可以传递结构成员吗?我在这里看到了一些类似的主题,但我无法将这些想法引入我的代码中(我是一个完全的 C 初学者)。 我将不胜感激任何帮助,尤其是代码中的清晰示例。
顺便说一句。我知道我不应该使用 scanf,但这只是举例。当我知道如何在函数参数中传递结构成员时,我会做其他事情。
最佳答案
至于你的问题(据我了解),确实无法完成。考虑使 takeString
函数仅接受单个字符串参数,并将输入读取到该字符串中。
然后将正确的字符串从数组和结构传递给函数。这可以通过另一个函数来完成,该函数采用指向要读取的结构的指针(或索引)。
也许像这样的伪代码:
void takeString(char *string)
{
scanf("...", string);
}
void takeStructure(int arrayIndex)
{
...
takeString(gifts[arrayIndex].city);
...
}
关于c - 函数定义中的结构变量和结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41265207/