Добро пожаловать. У меня две проблемы. Во-первых - размер функции bool (const char * pass), чтобы проверить, не превышает ли количество символов внутри строки не менее 8, но что-то не так. Он всегда показывает, что минимально 8 символов, даже строка содержит всего 3 символа.Как проверить, какие функции возврата и правильно рассчитать символы
Моя задача - создать несколько небольших функций для проверки правильности введенной строки символов. Можете ли вы помочь вам с этим? Если все маленькие функции внутри проверки bool (...) возвращают true, мне нужно написать в консоли «STRING OKAY».
Буду благодарен за любые предложения.
#include <iostream>
#include <cctype>
using namespace std;
//Check the amount of chars
bool size (const char* pass){
if(sizeof(pass) > 7)
return true;
}
//Checks if the ASCII are located between 32 to 126
bool isPrint (const char* pass){
for(int x=0; x <= sizeof(pass); x++){
if(isprint(pass[x]))
return true;
}
}
//Check the amount of numbers
bool isNum (const char* pass){
for(int x=0; x <= sizeof(pass); x++){
if(isdigit(pass[x]))
return true;
}
}
//Check the amount of Upper letters
bool isUpperLetter (const char* pass){
for(int x=0; x <= sizeof(pass); x++){
if(isupper(pass[x]))
return true;
}
}
//Check the amount of lower letters
bool isLowerLetter (const char* pass){
for(int x=0; x <= sizeof(pass); x++){
if(islower(pass[x]))
return true;
}
}
//Check the amount of Punctuation Marks
bool isPunctMark (const char* pass){
for(int x=0; x <= sizeof(pass); x++){
if(ispunct(pass[x])){
return true;
}
}
}
//All small moduls together
bool check (const char* pass){
size(pass);
isPrint(pass);
isNum(pass);
isUpperLetter(pass);
isLowerLetter(pass);
isPunctMark(pass);
}
int main() {
char x;
cout << "Enter the string of characters" << endl;
cin >> x;
const char *password = &x;
check(password);
}
Вы получаете размер указателя, который, вероятно, '8' на вашей системе. Вероятно, вы хотите ['strlen'] (http://en.cppreference.com/w/cpp/string/byte/strlen) или еще лучше [' std :: string'] (http: //en.cppreference .com/ж/CPP/строка/basic_string). – BoBTFish
Ваша строка символов считывается в 'char', который отлично до тех пор, пока вы ожидаете только одного символа. Вы не можете использовать 'strlen' на одном' char', потому что это не '\ 0' завершено. Используйте 'std :: string'. – mars
Я не уверен, почему вы получили downvoted .... Вопрос соответствует правилам сайта. Вы опубликовали код, у вас была проблема с проблемой ... Может быть, эти средства, достаточные для downvote, могут комментировать и объяснять. – mjs