Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 43

Не работает оператор gets()

13.10.2011, 23:13. Показов 3189. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, помогите!

нужна прога для слипания строк, не используя стандартный оператор конкатенации.
прога была написана и работала. теперь понадобилось переделать эту и еще несколько задач под классы и я столкнулась со следующей проблемой: gets() отказывается работать. при замене на cin прога работает правильно до первого пробела. в чем дело?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.10.2011, 23:13
Ответы с готовыми решениями:

Один оператор не работает, а другой работает
Такой прикол: в теле функции loop один оператор switch работает, а второй не работает. Не работает тот, что switch...

Не работает оператор Like
В Access 2016 есть условная база данных, в которой по условию, мне надо сделать запрос через фильтр на контрагентов из Швейцарии и Германии...

Не работает оператор if
Не работает оператор if, ну то есть всегда проходит по ветке elif Немного о программе: Есть список ников, которые у меня расположены по...

6
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.10.2011, 23:14
cin считывает до разделителя
0
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 43
13.10.2011, 23:23  [ТС]
я знаю, поэтому прошу подсказать, как мне быть с неработающим gets()
из-за чего он не работает?

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
void stroki:: vvod_dvuh_strok()
{
setlocale(LC_ALL,"");
cout<<" Ввелите первую строку\n";
cin(s2);
cout<<"Введите вторую строку\n";
cin>>s3;
}
я не совсем точно сформировала. при использовании gets никаких ошибок не выдается, но прога не требует ввода символов.
на экране при использовании gets сразу выходит:
Ввелите первую строку
Введите вторую строку
0
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
13.10.2011, 23:40
значит у вас до этого был cin вызван, в буфере остался \n

перед вызовм gets, можете сделать cin.ignore()
1
20 / 20 / 4
Регистрация: 06.10.2011
Сообщений: 53
13.10.2011, 23:41
А свой код с gets прислать можешь?
0
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 43
13.10.2011, 23:50  [ТС]
теги конечно надо ставить, об этом мне напомнят, но мб хоть кто-то объяснит мне как?)))
а вот код:
с gets() обычная рабочая прога:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
char concat(char*s1, char*s2, char*s3)
{
do
{
*s1=*s2;
*s1++;
*s2++;
}
while(*s2 !='\0');
do
{
*s1=*s3;
*s1++;
*s3++;
}
while(*s3 !='\0');
*s1='\0';
return *s1;
}
 
void concat1()
{
char s2[20];
char s3[20];
char s1[20];
setlocale(LC_ALL,"");
cout<<"ВВедите первую строку: \n";
gets(s2);
cout<<"ВВеди вторую строку: \n";
gets(s3);
 
concat(s1,s2,s3);
cout<< s1 << endl;
_getch();
}
 
вот уже под классы:
 
char stroki::concat(char*s1, char*s2, char*s3)
{
do
{
*s1=*s2;
*s1++;
*s2++;
}
while(*s2 !='\0');
do
{
*s1=*s3;
*s1++;
*s3++;
}
while(*s3 !='\0');
*s1='\0';
return *s1;
}
 
void stroki:: vvod_dvuh_strok()
{
setlocale(LC_ALL,"");
cout<<"ВВеди первую строку: \n";
gets(s2);
cout<<"ВВеди вторую строку: \n";
gets(s3);
}
 
 
void stroki:: st(){
concat(s1,s2,s3);
cout<< s1 << endl;
_getch();
}
 
вызов этой ф-и:
void menu_class(){
  setlocale(LC_ALL, "");
  int p;
stroki t;
  do{
    system("cls");
    cout<<"\n Ïîäìåíþ ";
    cout<<"\n 1)Слияние двух строк"<<endl;
    cout<<"\n 2)Äëèíà ñòðîêè"<<endl;
    cout<<"\n 3)Âåðíóòüñÿ â ãëàâíîå ìåíþ"<<endl;
    cin>>p;
    system("cls");
    switch(p){
    case 1:{ t.vvod_dvuh_strok();   
     t.st();
         _getch();
            break;
            } 
    case 2:{ cout<<"fdg";
             break;}
             
}}
       
  while (p!=3);
  _getch();
}
Добавлено через 1 минуту
CПАСИИИБООО!!!!
cin.ignore() - то что нужно))
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
14.10.2011, 01:18
Цитата Сообщение от Мартиника Посмотреть сообщение
но мб хоть кто-то объяснит мне как?
А кнопочки в редакторе сообщений (это куда вы посты пишите) "AS", "ASM"... "C", "C++" для красоты навешали?

Вообще странная у Вас проблема... В С++ fgets() вот так выглядит: std::getline(), да и вместо нуль-терминальной строки лучше std::string использовать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.10.2011, 01:18
Помогаю со студенческими работами здесь

Не работает оператор if else
Всем привет :) Не могу понять , почему не работает оператор if else . Суть программы в том , что надо пройти тест и в конце подсчитать...

Не работает оператор if
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include &lt;math.h&gt; ...

Не работает оператор IF
при запуске окно командной строки быстро закрывается, а должно остаться открытым. FOR /f &quot;tokens=*&quot; %%a IN ('DIR /b /o-d...

Не работает оператор Like
Есть таблица клиентов, нужно отобрать строки в таблице по ФИО клиента. Хочется сделать такую возможность, чтобы пользователь ФИО не...

Не работает оператор IF
Всем привет. Занимаюсь постройкой привода для экваториальной монтировки телескопа, привод состоит из двух шаговых электродвигателей, двух...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru