Напишите простую программу телефонного справочника на C++, которая ищет телефонные номера в файле, содержащем список имен и телефонных номеров. Пользователю должно быть предложено ввести имя и фамилию, а затем программа выведет соответствующий номер или указывает, что имя не находится в каталоге. После каждого поиска программа должна спросить пользователя, хотят ли они найти другой номер, а затем либо повторить процесс, либо выйти из программы. Данные в файле должны быть организованы так, чтобы каждая строка содержала имя, фамилию и номер телефона, разделенные пробелами. Вы можете вернуться к началу файла, закрыв его, открыв его снова.Номер телефона Lsit
Я не могу получить строку check = strstr (phoneDirectory, name); для работы strstr part keep the error: никакой экземпляр перегруженной функции «strstr» не соответствует типам аргументов list.
Вот копия моего кода:
#include <iostream>
#include <string>
#include <fstream>
#include <cstring>
using namespace std;
int arraySize();
int main()
{
const int SIZE = arraySize();
char *phoneDirectory;
int size=0;
char name; //name to look for
char *check = NULL;
bool find = false;
phoneDirectory = new char [SIZE];
ifstream phoneNumbers;
phoneNumbers.open("phoneNumbers.txt");
if (!phoneNumbers)
cout << "Error opening data file\n";
//looping throught the name file
else
{
for (int i = 0; i < SIZE; i++)
{
phoneNumbers >> phoneDirectory;
}
phoneNumbers.close(); //closes data file
}
phoneNumbers.close();
// Get a name or partial name to search for.
cout << "Enter a name or partial name to search for: ";
cin.getline(phoneDirectory, name);
cout << "\nHere are the results of the search: " << endl;
int entries = 0;
for (int i = 0; i < size; i++)
{
check = strstr(phoneDirectory, name);
if (check != NULL)
find = true;
}
if (!find)
cout << "No matches!" << endl;
delete [] phoneDirectory;
return 0;
}
int arraySize()
{
string phoneNum;
int size = 0;
ifstream phoneNumbers; // Input file stream object
// Open the data file.
phoneNumbers.open("phoneNumbers.txt");
if (!phoneNumbers)
cout << "Error opening data file\n";
//looping throught the name file
else
{
while (getline(phoneNumbers, phoneNum))
{
size++;
}
phoneNumbers.close(); //closes data file
}
return size;
}
Пожалуйста, используйте [MCVE] (https://stackoverflow.com/help/mcve) –
В вашей программе есть несколько проблем. Ваша переменная 'name' является единственным символом' char', и вы пытаетесь прочитать несколько символов. Ваша переменная 'phoneDirectory' является массивом' char', который равен только количеству строк, в отличие от массива строк для каждой строки. Поскольку вы используете класс 'string', я также предлагаю вашему телефонному каталогу' std :: vector' 'std :: string'. Тогда вам не нужно открывать файл для подсчета строк, вы можете просто читать строки и помещать их в вектор. – pstrjds
Мы никогда не изучали векторы, поэтому я не могу их использовать, и я не предполагаю использовать строку, которую я только что использовал для их отладки. Предположим, мы используем строки c. – Doe