newbie print struct C вопрос программирования - PullRequest
0 голосов
/ 19 сентября 2011

Я новичок в программировании на C и пытаюсь создать простой код ниже для печати члена структуры с использованием другой функции.

Я не понимаю этого, так как в функции funct_to_print_value я уже объявляю переменную структуры "car", и я считаю, что мне нужно просто напечатать, используя (точка) нотацию для доступа к ней. Явно нет, так как я получил ошибку выше. Кто-нибудь может поделиться своими знаниями, как я могу напечатать значение покупателя и какую ошибку я совершил выше?

Спасибо ..

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>


typedef struct slot_car {
    int buyer;
} slot_car;



int main() {



    slot_car car;
    memset(&car, 0, sizeof(car));
    car.buyer = 1;

    printf("value of car is .. %d\n", car.buyer);

    funct_to_print_value();
    printf("end of function..\n");
    return 0;
}

int funct_to_print_value()
{
    printf("you are in printlist function..\n");
    slot_car car;
    printf("value of car inside is %d\n", car.buyer);

    return 1;
}

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Поскольку вы объявили car внутри каждой функции отдельно, они являются отдельными (локальными) переменными. Вы, вероятно, хотите вместо этого передать его из main в funct_to_print_value в качестве параметра. Предупреждение странное, но вполне возможно, что компилятор обнаружил непосвященное значение и дал это сообщение, потому что оно впервые используется в printf.

0 голосов
/ 19 сентября 2011

Это выглядит хорошо для меня. Было бы полезно иметь больше информации. Все, что я сделал, это извлек ваш пример в файл temp.c и скомпилировал его, используя gcc -c temp.c. Не было ошибок.

На какой ОС это?

Какая это среда компиляции / компилятор?

Как ты это делаешь? (команды, используемые в среде сборки)

Я использую gcc 4.4.3 в Ubuntu Linux 10.04.

Редактировать 1:

Что произойдет, если вы приведете car.buyer к int?

printf ("значение car ..% d \ n", (int) car.buyer);

Редактировать 2:

Как насчет этого, чтобы напечатать свой 1?

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>


typedef struct slot_car {
    int buyer;
} slot_car;



int main() {



    slot_car car;
    memset(&car, 0, sizeof(car));
    car.buyer = 1;

    printf("value of car is .. %d\n", car.buyer);

    {
       int temp_ret;
       temp_ret = funct_to_print_value();
       printf("end of function..%d\n",temp_ret);
    }
    return 0;
}

int funct_to_print_value()
{
    printf("you are in printlist function..\n");
    slot_car car;
    printf("value of car inside is %d\n", car.buyer);

    return 1;
}

value of car is .. 1
you are in printlist function..
value of car inside is 134514096
end of function..1
cnorton@steamboy:~/scratch$ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...