Obtener entrada para la estructura de la función

Estaba intentando enviar una estructura a una función y completar la estructura con el valor correcto en la función y luego mostrar el valor en main, pero no funcionó cuando lo ejecuté. (No puedo usar funciones de puntero).

struct inventory{ char name[20]; int number; }; void function(struct inventory items); int main() { int x,y,z; struct inventory items; function(items); printf("\nam in main\n"); printf("\n%s\t",(items).name); printf(" %i\t",(items).number); getch(); } void function(struct inventory items) { printf(" enter the item name\n "); scanf(" %s ",&(items).name ); printf(" enter the number of items\n "); scanf("%i",&(items).number ); } 

(es decir, no se me permite usar la función de puntero) ¿cómo puedo mostrar el nombre y el número sin el puntero?

 struct inventory { char name[20]; int number; }; struct inventory function(); int main() { int x,y,z; struct inventory items; items=function(); printf("\nam in main\n"); printf("\n%s\t",(items).name); printf(" %d\t",(items).number); getch(); } struct inventory function() { struct inventory items; printf(" enter the item name\n "); scanf(" %s ",&items.name ); printf(" enter the number of items\n "); scanf("%d",&items.number ); return items; } 

Puede devolver la referencia de estructura desde la función, considor el código dado a continuación

  struct inventory{ char name[20]; int number; }; struct inventory function(struct inventory items); int main() { int x,y,z; struct inventory items,ret_itm; ret_itm=function(items); printf("\nam in main\n"); printf("\n%s\t",(ret_itm).name); printf(" %i\t",(ret_itm).number); getch(); } struct inventory function(struct inventory items) { printf(" enter the item name\n "); scanf(" %s ",&(items).name ); printf(" enter the number of items\n "); scanf("%i",&(items).number ); return items; }