Я должен проверить мои данные " 123-AB-12345 " как правильные, используя массив символов. Я установил размер массива char в 13, включая '\ 0'. Функция должна возвращать false, если условие не выполняется. Все, что я сделал, - это то, что программа проверяет эти 12 символов, но ОНО НЕ ВОЗВРАЩАЕТСЯ, КОГДА Я ПРОШЕЛ БОЛЬШЕ ЗНАЧЕНИЙ, например, « 123-AB-12345 6789», и оно возвращает значение true. Моя программа выглядит следующим образом:
#include<iostream>
using namespace std;
bool isValidBookId(char bookId[13]);
int main()
{
char book[13];
cin.getline(book,13);
bool id = isValidBookId(book);
cout<<id;
}
bool isValidBookId( char bookId[13] ) {
/* Valid: 098-EN-98712 */
if ( bookId[12] != '\0' )
return false;
if ( bookId[3] != '-' )
return false;
if ( bookId[6] != '-' )
return false;
for ( int i = 0; i < 3; i++ ) {
if ( bookId[i] < '0' || bookId[i] > '9' ) {
return false;
}
}
for ( int i = 4; i < 6; i++ ) {
if ( bookId[i] < 'A' || bookId[i] > 'Z' ) {
return false;
}
}
for ( int i = 7; i < 12 || bookId[12]!='\0'; i++ ) {
if(bookId[13]!='\0'){
return false;
}
if ( bookId[i] < '0' || bookId[i] > '9' ) {
return false;
}
}
return true;
}
Я не знаю, почему это условие не работает.
if ( bookId[12] != '\0' )
return false;