2016-07-02 3 views
1

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

rec5.c: In function âmainâ: 
    rec5.c:7:17: error: array type has incomplete element type 
struct Item cart[3]; 
      ^
    rec5.c:8:16: error: array type has incomplete element type 
struct Item book[4]; 
      ^
    rec5.c:9:16: error: array type has incomplete element type 
struct Item clothing[5]; 
      ^
    rec5.c:10:16: error: array type has incomplete element type 
struct Item sports[6]; 
      ^
    rec5.c:20:5: error: expected â;â before âprintfâ 
printf("%s %d %d", book.name, book.price, book.quantity); 
^ 
    rec5.c:24:6: error: expected â;â before âprintfâ 
printf("%s %d %d", clothing.name, clothing.price, clothing.quantity); 
^ 
    rec5.c:28:6: error: expected â;â before âprintfâ 
printf("%s %d %d", sports.name, sports.price, sports.quantity); 

Я попытался с помощью ЬурейеГо, прежде чем структура, но я получил «размер массива не объявлен». Я не могу сказать, почему Item не объявляется должным образом. Функция должна спросить у клиента, какой элемент они хотят, а затем отобразить правильные данные.

#include <stdio.h> 

int main(){ 
    struct Item cart[3]; 
    struct Item book[4]; 
    struct Item clothing[5]; 
    struct Item sports[6]; 

    book.name = "harry potter"; 
    book.price == "$100"; 
    clothing.name = "shirt"; 
    clothing.price == "$15"; 
    sports.name = "football"; 
    sports.price = "20"; 

    scanf("enter Item %c", cart.type); 

    if (cart.type == "book"){ 
     scanf("please enter quantity %d", book.quantity) 
     printf("%s %d %d", book.name, book.price, book.quantity); 
    } 
    if (cart.type == "clothing"){ 
     scanf("please enter quantity %d", clothing.quantity) 
     printf("%s %d %d", clothing.name, clothing.price, clothing.quantity); 
    } 
    if (cart.type == "sports"){ 
     scanf("please enter quantity %d",sports.quantity) 
     printf("%s %d %d", sports.name, sports.price, sports.quantity); 
    } 
} 

struct Item 
{ 
    char *type; 
    char *name; 
    double price; 
    double quantity; 
}; 
+0

совет: вы можете использовать бесплатные инструменты, такие как AStyle, для исправления форматирования кода перед публикацией –

ответ

3

Ваш struct используется перед определением. Просто переместите определение struct, чтобы быть выше вашей функции main().

Смежные вопросы