2014-02-06 5 views
0

Я в своем классе CS162, и мое назначение на этой неделе - создать очень простой текстовый редактор, который предлагает пользователю ввести абзац, введите #, когда закончите, а затем программа произведет простые изменения, например, заглавные слова любого слова начала предложения и изменяет общие ошибки, такие как «те» на «.». Теперь мне всегда трудно начинать с этих вещей; Я точно знаю, как я исправлю ошибки (попробуйте найти ошибки для орфографии и замените эти слова правильной орфографией/использованием .upper для изменения в верхнем регистре), но я не могу начать работу с простого пользователя введите абзац и завершите его с помощью #. Я бы использовал цикл, который позволяет пользователю продолжать вводить текст, пока они не наберут #? как это будет выглядеть? Извините, если это кажется чрезмерно основным; Мне всегда сложно начинать с программ, так как я очень ранний новичок. Спасибо.Создание простого текстового редактора в C++

+0

Почему вы не можете позволить им не набрать до попадания Return? – Feign

+0

Я не знаю ... это было бы намного проще, не так ли? Нет, мы должны сделать что-то ... это требование, и я не знаю, почему. – hhoward

+0

Чтобы быть понятным, они заканчивают абзац '#', а затем нажимают на возврат, правильно? – Potatoswatter

ответ

0

Использование conio.h

Вы можете использовать такие функции, как:

Геч() - считывает символ из консоли без буфера или эхо

kbhit(), который определяет, будет ли клавиша клавиатуры была нажат.

, чтобы получить то, что вы ищете.

Edit: Это от пользователя Falcom Момота, для систем Linux:

#include <unistd.h> 
#include <termios.h> 
char getch() { 
    char buf = 0; 
    struct termios old = {0}; 
    if (tcgetattr(0, &old) < 0) 
      perror("tcsetattr()"); 
    old.c_lflag &= ~ICANON; 
    old.c_lflag &= ~ECHO; 
    old.c_cc[VMIN] = 1; 
    old.c_cc[VTIME] = 0; 
    if (tcsetattr(0, TCSANOW, &old) < 0) 
      perror("tcsetattr ICANON"); 
    if (read(0, &buf, 1) < 0) 
      perror ("read()"); 
    old.c_lflag |= ICANON; 
    old.c_lflag |= ECHO; 
    if (tcsetattr(0, TCSADRAIN, &old) < 0) 
      perror ("tcsetattr ~ICANON"); 
    return (buf); 

}

+0

Что делать, если OP не находится на машине Windows? – Duck

+0

Ah right ... так что на linux машине это можно сделать с помощью termios.h. Я отредактирую код, который я где-то помещал в закладки ... – Feign

+3

Честно говоря, я думаю, что пользователю OP разрешено нажать return. # Бит - это просто отличить новую строку в потоке от того, что считается новой строкой, заканчивающей абзац. IOW он может ввести 5 предложений и нажать enter 5 раз, но это не абзац, пока он не закончится на #. Это на самом деле упрощает работу с отдельными нажатиями клавиш. – Duck

Смежные вопросы