Я разрабатываю интерфейс для аэропорта, который должен регистрировать людей на рейс, генерировать посадочный талон и т. Д. Для курса в университете. Я решил использовать 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.