Форум программистов, компьютерный форум CyberForum.ru

Чтение строки - C++

Восстановить пароль Регистрация
 
Dmitriy33
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 3
03.07.2012, 10:35     Чтение строки #1
В процессе написания программы столкнулся с не большей проблемой, и никак не могу решить. Подскажите что-то.
Есть строка, которая заканчивается символами "===". Мы читаем ее из клавиатуры, а потом разбиваем на слова, где слово - символы между пробелами. Вот эта функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool just_reading_string (char str[50], char dict[10][10])
{
    cout<<str<<endl;
    short Nsymbol = 0;
    while (!((str[Nsymbol] == '=') && (str[Nsymbol + 1] == '=') && (str[Nsymbol + 2] == '=')))
    {
        char temp_word[10];
        
        short counter = 0;
        while (str[Nsymbol] != ' ')
        {
            temp_word[counter] = str[Nsymbol];
            Nsymbol++;
            counter++;
        }
        cout<<temp_word<<endl;
        //if (!maybe_you_mean(dict, temp_word))
        //  is_not_exist(dict, temp_word);
        Nsymbol++;
    }
    cout<<"===";
    return true;
}
Но выводит она помимо слов еще и мусор, которым полнится массив "temp_word":Чтение строки
Что можно с этим сделать?
П.С. В дальнейшей программе слова нужно не просто выводить, а передавать в функции, которые закомментированы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 10:35     Чтение строки
Посмотрите здесь:

Чтение строки C++
C++ Чтение строки
чтение строки C++
C++ Чтение строки
Чтение из файла и строки C++
C++ Чтение символов из строки
Чтение строки C++
C++ Чтение строки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.07.2012, 11:43     Чтение строки #2
Цитата Сообщение от Dmitriy33 Посмотреть сообщение
В процессе написания программы столкнулся с не большей проблемой, и никак не могу решить. Подскажите что-то.
Есть строка, которая заканчивается символами "===". Мы читаем ее из клавиатуры, а потом разбиваем на слова, где слово - символы между пробелами. Вот эта функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool just_reading_string (char str[50], char dict[10][10])
{
    cout<<str<<endl;
    short Nsymbol = 0;
    while (!((str[Nsymbol] == '=') && (str[Nsymbol + 1] == '=') && (str[Nsymbol + 2] == '=')))
    {
        char temp_word[10];
        
        short counter = 0;
        while (str[Nsymbol] != ' ')
        {
            temp_word[counter] = str[Nsymbol];
            Nsymbol++;
            counter++;
        }
        cout<<temp_word<<endl;
        //if (!maybe_you_mean(dict, temp_word))
        //  is_not_exist(dict, temp_word);
        Nsymbol++;
    }
    cout<<"===";
    return true;
}
Но выводит она помимо слов еще и мусор, которым полнится массив "temp_word":Вложение 167029
Что можно с этим сделать?
П.С. В дальнейшей программе слова нужно не просто выводить, а передавать в функции, которые закомментированы.
Проблема наверное в нуль-символе. Если у тебя есть строчка, допустим "abc" в массиве str, т.е :
str[0] = 'a', str[1] = 'b', str[2] = 'c', то str[3] = '\0' - должен быть. Иногда, его нужно прописывать ручками. Так как cout и printf, и подобные им считывают строчку до нуль-символа (коего нет), они начинают брать и мусор позади.
Dmitriy33
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 3
03.07.2012, 11:54  [ТС]     Чтение строки #3
Да. Спасибо. Не знаю, как я не заметил эту ошибку. Прописал с руки - все работает. Благодарю.
Yandex
Объявления
03.07.2012, 11:54     Чтение строки
Ответ Создать тему
Опции темы

Текущее время: 04:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru