我试图从函数返回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"};
我很乐意接受有关如何使其发挥作用的任何提示......
答案 0 :(得分:4)
应该是
struct returnera read(struct returnera returnDuo, struct vara varuArray[])
不是
struct read(struct returnera returnDuo, struct vara varuArray[])
答案 1 :(得分:1)
这是使用typedef的好例子。向结构声明typedef可为结构类型提供紧凑的单字名称。例如:
#include "stdio.h"
typedef struct Item_Struct {
int val;
} Item;
Item Update( Item item, int val )
{
item.val = val;
return item;
}
int main( int argc, char** argv )
{
Item item;
printf( "Item -> %i\n", Update(item,4).val ); // Prints "Item -> 4"
return 0;
}
请注意,在C ++中(与C相反),您可以单独使用结构的名称:
returnera read(returnera returnDuo, vara varuArray[])