Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Набор символов и getchar()


Автор: Bro058 22.4.2010, 18:01
Всем день добрый у меня вот такой вопрос...
начал изучение Си-строк и столкнулся с непониманием работы элементарного мехаанизма:
дан код: 

      
Код
      #include < stdio.h>
              main()
              {

              char f;
              f = getchar();
              while ( f!= '*') {
                                    putchar(f);
                         f = getchar();
                                       }
            getch();
             }


Обясните пожалуйста как так происходит что мы каждый раз вводим ЦЕЛЫЙ НАБОР СИМВОЛОВ и его же получаем, ведь функция GETCHAR() запоминает только ОДИН САМЫЙ ПЕРВЫЙ СИМВОЛ, а тут как то вся строка выводиться ??????
 smile 


Модератор: одна тема, один вопрос - для своих вопросов создавай отдельные темы
Модератор: не забываем пользоваться кнопочкой "Код"

Автор: GoldFinch 22.4.2010, 18:07
Bro058, она выдает символы по очереди

Автор: SickFxck 22.4.2010, 18:08
Bro058, после считывания символа, смещается некий внутренний указатель на следующий.

Автор: Bro058 22.4.2010, 18:13
ХМ..но если я напишу вот так:

 main()
{
char f;
f = getchar();
putchar(f);

getch;
}

здесь нам на экран выдаст только ОДИН ПЕРВЫЦЙ СИМВОЛ и всё.....
вопрос в принципе следующий, в предыдущемпочему выводиться весь набор, ведь каждый раз кагда мы вводим допустим набор символов GETCHAR() должен взять только ПЕРВЫЙ символ и потом вывести его, и так постоянно пока этот символ не станет = "*".....НО бЛИН как то получается что СКОЛЬКО ввёл СТОЛЬКО и получил, пачему? на доходит до меня((
 smile 

Автор: SickFxck 22.4.2010, 18:17
Цитата(Bro058 @  22.4.2010,  18:13 Найти цитируемый пост)
здесь нам на экран выдаст только ОДИН ПЕРВЫЦЙ СИМВОЛ

А сколько должен? Напиши два раз getchar():
Код

    char f;
    getchar();
    f = getchar();
    putchar(f);

Что изменилось?

Автор: mes 22.4.2010, 18:18
Цитата(Bro058 @  22.4.2010,  17:01 Найти цитируемый пост)
                   char f;
              f = getchar();
              while ( f!= '*') {
                     putchar(f);
                     f = getchar();
              }



Bro058, имхо так пример выглядит логиченее :
Код

for (char ch;;) 
{
  ch = getchar  ();

  if (ch == '*') break;
  
  putchar (ch);
}

а по теме, если не понимаете как работает команда, прежде всего читайте руководство :
вот первое из гугля : http://www.codenet.ru/progr/cpp/spr/176.php :
Цитата

 getchar читает символы с stdin, который имеет
      буфер на одну строку. Поэтому она ничего не возвращает до
      тех пор, пока вы не нажмете Enter 



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)