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

как остановить ввод, когда text[i] доходит до маркера? - C++

Восстановить пароль Регистрация
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
18.03.2012, 20:39     как остановить ввод, когда text[i] доходит до маркера? #1
Возникла проблема, не знаю как правильно сделать это: остановить ввод при достижении маркера. У меня текст в файле имеет размер меньший, чем размер массива и в некоторых ситуациях программа выводит еще вот такие вещи: 'M'. Динамические массивы использовать нельзя. Когда пишу ввод так:
C++
1
input >> text[i];
, то программа пропускает пробелы.
Вот этот код работает, но он просто выводит выводит текст(даже без маркера):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    const int size = 256;
    char mark = '*';
    char text[size], slovo[size];
    int i = 0;
    ifstream input("D://l3/input.txt");
    while(input.peek() != EOF)
    {
        input.getline(text, size);
    }
    cout << text << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 20:39     как остановить ввод, когда text[i] доходит до маркера?
Посмотрите здесь:

C++ как остановить программу?
как остановить проигрывание звука C++
C++ как остановить ввод без ошибок ?
C++ как остановить цикл ?
C++ Как остановить выполняемую функцию?
Как остановить выдачу ошибки? C++
C++ Как остановить программу?
C++ Циклический алгоритм: прекратить ввод, когда сумма введенных чисел превысит 100

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
18.03.2012, 22:33     как остановить ввод, когда text[i] доходит до маркера? #2
Kirill Losev, предлагаю посимвольно считывать :
1) весь текст в массив ,а затем обрезать по маркер
Или
2) breakОМ ввод остановить


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
24
25
26
27
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "RUS");
        const int size = 256;
        size_t pos;
        char mark = '*';
        char text[size], slovo[size];
        int i = 0;
        ifstream input("D://l3/input.txt");
 
        /// ЧИТАТЬ ФАЙЛ ПОКА НЕ КОНЕЦ ФАЙЛА  
        /// ЧИТАТЬ ФАЙЛ ПОКА НЕ КОНЕЦ МАССИВА
        while(!input.eof() && text) 
        {
            
                input.get(text[i]);// ПОСИМВОЛЬНО СЧИТЫВАЕМ
                if(text[i] == mark) pos = i;
                i++;
        }
        text[pos] = '\0';  // ОБРЕЗАТЬ МАССИВ ПО МАРКЕР
        cout << text << endl;
}
2.
C++
1
2
3
4
5
6
7
8
9
10
        while(!input.eof() && text  ) 
        {
            
                input.get(text[i]);// ПОСИМВОЛЬНО СЧИТЫВАЕМ
                if(text[i] == mark) break;//pos = i;
                i++;
        }
        text[i] = '\0';  // ОБРЕЗАТЬ МАССИВ 
        cout << text << endl;
}
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
18.03.2012, 22:43  [ТС]     как остановить ввод, когда text[i] доходит до маркера? #3
MrCold, спасибо. попытаюсь использовать по-максимуму
Yandex
Объявления
18.03.2012, 22:43     как остановить ввод, когда text[i] доходит до маркера?
Ответ Создать тему
Опции темы

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