【发布时间】:2018-08-06 08:58:45
【问题描述】:
我正在尝试从函数返回 struct。
好像是这样的。。
struct read(struct returnera returnDuo, struct vara varuArray[]) {
char varunr[LISTNUMBER], varunamn[LISTNUMBER];
FILE *varuLista;
varuLista = fopen(returnDuo.filnamn, "r");
if(varuLista!=NULL) {
while(fscanf(varuLista,"%s\t%s\t%d\n",varunr, varunamn,
&varuArray[returnDuo.antalVaror].lagerSaldo) == 3){
strncpy(varuArray[returnDuo.antalVaror].varuNr,varunr,5);
strncpy(varuArray[returnDuo.antalVaror].varuNamn,varunamn,30);
returnDuo.antalVaror++;
}
printf("Filen är laddad..\n");
kommaVidare();
}
else {
printf("Filen hittades inte, skapar en tom fil"); kommaVidare();
}
fclose(varuLista);
return returnDuo;
}
我正在尝试返回 returnDuo 结构中的内容,但我收到错误消息:“预期标识符或 '('”。如果我使用 void 函数,它会按预期工作而不会返回任何内容,但我不能弄清楚如何返回这个struct。
这就是我设置结构的方式。
struct vara {
char varuNr[5];
char varuNamn[50];
int lagerSaldo;
};
struct returnera {
int antalVaror;
char filnamn[LISTNUMBER];
};
以及我如何在 main 中设置它们。
struct vara varuArray[SIZE];
struct returnera returnDuo = {0,"0"};
我很乐意就如何让它发挥作用提出任何建议...
【问题讨论】:
-
struct read(...)->struct returnera read(...)??? -
请应用一些格式。然后你会注意到
read()的返回值只是struct。然后检查您是否还有问题。 -
请学习并应用minimal reproducible example的概念。
-
我不知道为什么,但我觉得代码是瑞典语很有趣:D 无意冒犯。
-
瑞典代码让它变得更好^^