【发布时间】:2020-01-03 22:32:45
【问题描述】:
我必须使用 bool 函数在 C++ 中输入和检查字符数组。如果超过 10 个字符程序必须返回 false。如果少于 10 个字符,prog 必须返回 true。 我尝试了以下方法,但没有得到想要的结果。请各位帮忙
#include<iostream>
#include<cstring>
using namespace std;
bool namefunc( char name[10] );
int main()
{
char name[10];
cin.getline(name,10);
int print = namefunc(name);
cout<<print;
}
bool namefunc( char name[10] ) {
if (strlen(name)>10)
return false;
else
return true;
}
【问题讨论】:
-
strlen 永远不能为该数组返回 >= 10,因为一个字符将是空终止符。 cin.getline(名称,10);无论您在提示中输入多少,都会将返回的字节数限制为 10。
-
@Michael 轻微更正:
strlen永远无法为该数组返回>= 10,如果不涉及未定义行为 -
@scohe001 迈克尔就在这里。不可能有UB。
std::iostream::getline将在 9 个字符处停止,终止并在cin中设置一个失败位。
标签: c++ arrays validation