Как использовать файл для заполнения массива и сравнить его с пользовательским вводом C ++ - PullRequest
0 голосов
/ 25 апреля 2018

Я написал код для заполнения массива из файла а затем использовать этот массив, чтобы сравнить его с пользовательским вводом Программа должна попросить пользователя ввести имя или частичное имя для поиска в массив вот код:

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
    bool found = false;
    const int arraySize = 35;
    const int length = 100;
    char contacts[arraySize][length];
    int count = 0;              // Loop counter variable
    ifstream inputFile;         // Input file stream object

    inputFile.open("input.txt"); // Open the file.

                                   // Read the numbers from the file into the array.
                                   // After this loop executes, the count variable will hold
                                   // the number of values that were stored in the array.
    while (count < arraySize && inputFile >> contacts[count])
        count++;
    // Close the file.
    inputFile.close();


    char search[length];                        
    char *fileContact = nullptr;        
    int index;  
    cout << "To search for your contact's number \nplease enter a name or partial name of the person.\n";
    cin.getline(search, length);                            
    for (index = 0; index < arraySize; index++)
    {
        fileContact = strstr(contacts[index], search);
        if (fileContact != nullptr)
        {
            cout << contacts[index] << endl;        
            found = true;
        }
    }
    if (!found) cout << "Sorry, No matches were found!";
    return 0;
}

и имена в файле

"Алехандра Круз, 555-1223"

"Джо Луни, 555-0097"

"Гери Палмер, 555-8787"

"Ли Чен, 555-1212"

"Холли Гаддис, 555-8878"

"Сэм Уиггинс, 555-0998"

"Боб Каин, 555-8712"

"Тим Хейнс, 555-7676"

"Уоррен Гаддис, 555-9037"

"Джин Джеймс, 555-4939"

"Рон Палмер, 555-2783"

так что код работает, но проблема в когда я пишу Алехандру, например вывод: «Алехандра вывод должен показать полное имя и номер: "Алехандра Круз, 555-1223"

кто-нибудь знает, как это исправить? Спасибо!!

1 Ответ

0 голосов
/ 25 апреля 2018

Когда вы используете

inputFile >> contacts[count]
  1. Ведущие пробельные символы отбрасываются.
  2. Непробельные символы считываются в contants[count].
  3. Чтение останавливается, когдавстречается символ пробела.

Это объясняет ваш вывод.

Вместо этого вам нужно использовать istream::get.

while (count < arraySize && inputFile.get(contacts[count], length) )
    count++;

В ответ на комментарий OP

Приведенное выше должно содержать все строки файла до arraySize числа строк.

Вы можете добавить некоторые отладочные выходные данные для устранения проблемы.

while (count < arraySize && inputFile.get(contacts[count], length) )
{
    std::cout << "Read " << count+1 << "-th line.\n" << "\t" << contants[count] << "\n";
    count++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...