The iscntrl()
function return value:
A value different from zero (i.e., true) if indeed c is an alphabetic
letter. Zero (i.e., false) otherwise.
The isalpha()
function return value:
A value different from zero (i.e., true) if indeed c is a control
character. Zero (i.e., false) otherwise.
So, it returns non-zero value (not 1) when the condition is true
. So that’s intentional.
Also, a tiny note:
isalpha(lettera)? cout << lettera << " è un carattere!" : cout << lettera << " non è un carattere!";
isalpha(numero)? cout << numero << " è un carattere!" : cout << numero << " non è un carattere!";
Those two statements are very similar, so you should make a function:
inline void printmsg(char ch)
{
std::cout << ch << (isalpha(ch) ? "" : " non") << " è un carattere!";
}
and call it:
printmsg(lettera);
printmsg(numero);
1
solved Why “iscntrl” returns 2?