Сигнал SIGSEV получил печать результата в C с API MySQL - PullRequest
0 голосов
/ 24 октября 2019

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

Я создал функцию под названием «recherche», которая выполняет запрос MySQL, сохраняет результат впеременная и возвращает эту переменную (строка [0]). Проблема в том, что когда я вызываю эту функцию для печати результата, я получаю сигнал SIGSEV:

Функция: ungetwc () (C: \ Windows \ System32 \ msvcrt.dll)

Я пытался просмотреть каждый найденный мной веб-сайт, у некоторых людей есть похожие проблемы, но он никогда не повторяетсяЯ думаю, проблема в том, что printf ожидает тип, такой как char, int, double, float ... Но не тип MYSQL_ROW. Дело в том, что это строковый указатель, поэтому это не должно быть проблемой. Я ищу способ сохранить результат этого запроса в переменной char *, которая кажется невозможной.

Вот фрагмент кода, который является проблемой:

printf("\nPlease enter your ticket's number : ");
scanf("%s", ticket_number);
sprintf(my_query, "SELECT prenom FROM passagers WHERE ticket_number = %s", ticket_number);

printf("\nWelcome %s ! Please answer these few questions before getting your boarding pass.\n", recherche(&mysql, my_query));

Вот функция recherche () :

MYSQL_ROW recherche(MYSQL *mysql, char *my_query) {
    if ((mysql_query(mysql, my_query))) {
        printf("\nQUERY FAILED.");
    }
    MYSQL_RES *resultat = mysql_store_result(mysql);
    if (resultat == NULL) {
        printf("\nFAILED RESULT!");
    }
    MYSQL_ROW row = mysql_fetch_row(resultat);
    mysql_free_result(resultat);
    return row[0];
}

Я также получаю это сообщение во время компиляции в строке return row[0]:

предупреждение: возврат из несовместимого типа указателя [-Wincompatible-pointer-types]

Без отладчика имя клиента для% s в printf с помощью recherche () печатается несмотря на сигнал SIGSEV.

...