gpt4 book ai didi

c++ - C++ 中的字符数组验证

转载 作者:行者123 更新时间:2023-12-03 05:59:24 25 4
gpt4 key购买 nike

我必须使用字符数组验证我的数据“123-AB-12345”是否正确。我将字符数组大小设置为 13,包括 '\0'。如果不满足条件,该函数必须返回 false。我所做的就是程序验证这 12 个字符,但当我传递更多值(例如“123-AB-123456789”)时,它不会返回 FALSE,并且它会返回 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;

最佳答案

查看您的代码,唯一的解释是数组的最后一个字符为空。尝试指定如下分隔符:

cin.getline(book, 13, '\n');

我会引用这个link :

“如果 n 大于零,即使提取了空字符串,空字符 ('\0') 也会自动附加到写入的序列中。”

关于c++ - C++ 中的字符数组验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59604661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com