Я создаю функцию findBookID
. Когда я пытаюсь преобразовать id книги в целое число, это показывает мне ошибку.
может ли кто-нибудь предоставить мне решение для решения этой проблемы? С уважением.
Ошибка последнего в сообщении.не может преобразовать char в int при использовании atoi
strncpy(bookId, source + pos_text + 1, len_text - pos_text);
int i = atoi(bookId); //atoi converts the string to integer
if (id == i)
{
return true;
}
Вот как я объявляю функции
bool findBookId(char source[], int id)
{
char input[10] = "Book ID: ";
char bookId[5];
int int_id = 0;
int pos_search = 0;
int pos_text = 0;
int len_search = 10;
size_t len_text = strlen(source);
if (len_search < len_text)
{
for (pos_text = 0; pos_text < len_search - 1; ++pos_text)
{
if (source[pos_text] == input[pos_search])
{
++pos_search;
if (pos_search == len_search - 1)
{
// match
strncpy(bookId, source + pos_text + 1, len_text - pos_text);
int i = atoi(bookId); //atoi converts the string to integer
if (id == i){
return true;
}
}
}
else
{
pos_text -= pos_search;
pos_search = 0;
}
}
}
return false;
}
Полное кодирование для справки: https://drive.google.com/open?id=1zHc_26kFPVHs0b99-gkX1hdQ3AYykCPL9KegI5QobdY
Это сообщение об ошибке: вызов функции не позволяют константного выражения
«это покажет мне ошибку». Что именно «это» и что такое «ошибка»? Ошибка компиляции? Ошибка выполнения? Покажите точную ошибку. – kaylum
Не могли бы вы разместить небольшой проверяемый образец вашего кода, попробовали ли вы запустить свой код через отладчик, чтобы узнать, что находится в bookId при переходе через atoi? – dvhh
Возможно, в вашем верхнем примере добавьте образец 'source'' pos_text' 'len_text' значения – dvhh