2016-11-23 3 views
-3

Я получаю сообщение об ошибке, потому что мне нужно поместить возвращаемое значение для этой структуры.Как получить пользовательский ввод для структуры с использованием другой функции, чтобы получить пользовательский ввод в C99

struct Item enterItem(int sku) 
{ 
     char name; 

     printf("  SKU: %d", sku); 
     printf("  Name: "); scanf("%20[^\n]", &name); 
     clearKeyboard();      // Function call to remove'\n' 
     printf("  Price: "); 
     getDouble();       // Function call to get user input in double 
     printf(" Quantity: "); 
     getInt();       // Function call to get user input in int 
     printf("Minimum Qty: "); 
     getInt(); 
     printf(" Is taxed: "); 
     getYesOrNo();      // Function call to get user input in bool > (Y)es or (N)o 

} 
+1

Пожалуйста, пост [Minimal, полный и проверяемый примера] (http://stackoverflow.com/help/mcve). Где вы сохраняете значение? Также 'char name; scanf ("% 20 [^ \ n]", &name); 'плохо, потому что вам будет разрешено вводить только строку с нулевым символом (плюс завершающий нулевой символ). – MikeCAT

+0

Обычно вам не следует передавать/возвращать структуры по значению. пропустите указатели на них, чтобы избежать копирования. –

+0

Итак, почему бы вам не вернуть структуру, поскольку вы знаете, что вам нужно? Объявите локальную переменную этого типа структуры, заполните ее по мере необходимости и верните ее. Или еще лучше, измените функцию для принятия указателя на структуру, которую предоставляет вызывающий объект. – kaylum

ответ

0

Чтобы вернуть и вернуть его, вы должны создать строгий объект (данные).

То, что вы хотите, может быть, как это:

struct Item 
{ 
     char name[21]; 
     double price; 
     int quantity; 
     int minimum_qty; 
     _Bool is_taxed; 
}; 

struct Item enterItem(int sku) 
{ 
     struct Item item; 

     printf("  SKU: %d", sku); 
     printf("  Name: "); scanf("%20[^\n]", item.name); 
     clearKeyboard();      // Function call to remove'\n' 
     printf("  Price: "); 
     item.price = getDouble();   // Function call to get user input in double 
     printf(" Quantity: "); 
     item.quantity = getInt();   // Function call to get user input in int 
     printf("Minimum Qty: "); 
     item.minimum_qty = getInt(); 
     printf(" Is taxed: "); 
     item.is_taxed = getYesOrNo();  // Function call to get user input in bool > (Y)es or (N)o 

     return item;  
} 
Смежные вопросы