Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Набор символов и getchar() 
:(
    Опции темы
Bro058
Дата 22.4.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



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

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

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


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


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

Это сообщение отредактировал(а) bsa - 22.4.2010, 21:47
PM MAIL   Вверх
GoldFinch
Дата 22.4.2010, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Bro058, она выдает символы по очереди
PM MAIL ICQ   Вверх
SickFxck
Дата 22.4.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 16.4.2010

Репутация: нет
Всего: 1



Bro058, после считывания символа, смещается некий внутренний указатель на следующий.
PM MAIL   Вверх
Bro058
Дата 22.4.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.1.2010

Репутация: нет
Всего: нет



ХМ..но если я напишу вот так:

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

getch;
}

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 16.4.2010

Репутация: нет
Всего: 1



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

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

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

Что изменилось?
PM MAIL   Вверх
mes
Дата 22.4.2010, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(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 





--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.