Мой проект состоит в том, чтобы создать программу банковского счета, в которой пользователь вводит номер счета и пароль, чтобы делать что-либо в программе. Используемые номера учетных записей и пароли должны храниться в виде строк C (файл заголовка строки не допускается). Я считаю, что проблема, с которой я столкнулся, связана с функцией strcmp. Вот моя функция, в которой возникает проблема.
void get_password(int num_accounts, char **acc_num, char **password)
{
char account[ACCOUNT_NUMBER];
char user_password[PASS_LENGTH];
std::cout << "\nEnter the account number: ";
// std::cin.getline(account, ACCOUNT_NUMBER);
std::cin >> account;
int i = 0;
do
{
if (strcmp(account, *(acc_num + i)) != 0)
{
i++;
}
else
break;
} while (i <= num_accounts);
if (i == num_accounts)
{
std::cout << "\nCould not find the account number you entered...\nExiting the program";
exit(1);// account number not found
}
std::cout << "\nEnter the password: ";
// std::cin.getline(user_password, PASS_LENGTH);
std::cin >> user_password;
if (strcmp(user_password, *(password + i)) != 0)
{
std::cout << "\nInvalid password...\nExiting the program";
exit(1);// incorrect password
}
else
{
std::cout << "\nAccount number: " << account
<< "\nPassword: " << user_password << "\n";
return;
}
}
acc_num и пароль представляют собой массивы C-строк. Когда я запускаю / отлаживаю программу, она вылетает при первом операторе if. Думаю, мой вопрос в том, правильно ли я использую функцию strcmp или есть проблема с указателями, которые я использую.
strcmp()
? - person user207421   schedule 07.02.2016#include <string>
вы#include <cstring>
или#include <string.h>
? - person SegFault   schedule 07.02.2016<string>
, а не<cstring>
. - person Anmol Singh Jaggi   schedule 07.02.2016acc_num[i]
, а не*(acc_num + i)
. Означает то же самое, но более читабельно и идиоматично. - person pm100   schedule 07.02.2016<cstring>
, а заголовок<string>
не разрешен. Мой вопрос касается строк C, а не строк C ++. - person BlackRockCitizen   schedule 07.02.2016<string>
, который определяетstd::string
(среди прочего),<string.h>
, который является заголовком C, который объявляет такие функции, какstrcmp()
, и<cstring>
, который является заголовком C ++, который (в общих чертах) предоставляет те же функции, что и<string.h>
, но в пространстве именstd
. - person Peter   schedule 07.02.2016