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

Не работает gets() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Arahn
Сообщений: n/a
18.06.2011, 00:56     Не работает gets() #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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#define _CRT_SECURE_NO_DEPRECATE
 
#include <iostream>
#include <Windows.h>
#include <time.h>
#include <string>
 using namespace std;
void main1();
void main2();
 int main(){
 SetConsoleCP(1251);
SetConsoleOutputCP(1251);
string asi;
do {
cout<<"Выберите программу для запуска (1-2), 0 - выход: ";
    cin>>asi;
    if (asi=="1") { system("cls");
    main1();
    system("cls");}
if (asi=="2") { system("cls");
    main2();
    system("cls");}
if (asi=="0") break;
else {system("cls");
cout<<"Неправильный ввод\n";}}
while (asi!="1"||asi!="2"||asi!="0");}
 
 void main2(){
 char ch[401];
 int i;
 int v=0;
 int c=0;
 int b=0;
 for (i=0; i<401;i++) ch[i]=0;
 cout<<"Введите фразу до 400 символов ";
 gets(ch);
 for (i=0; i<401;i++) {
     switch (ch[i]) {
     case 0 : break;
     case ' ' : c++;
     default : v++;}
     if (((ch[i]=='к')||(ch[i]=='К'))&&(ch[i+1]=='о')&&(ch[i+2]=='т')) b++;
 }
 cout<<v<<" Весего символов\n";
  cout<<v-c<<" Букв без пробелов\n";
 cout<<b<<" Слов кот в тексте\n";
  system("pause");
 }
 void main1(){}
Доброго времени суток у меня проблема такая:
gets(ch); в функции main2() не дожидается ввода и сразу выдает цикл и соответственно нулевой ответ. Что делать может кто поможет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.06.2011, 01:00     Не работает gets() #2
Цитата Сообщение от Arahn Посмотреть сообщение
asi!="1"
"1" - это строка, а char это '1'
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
18.06.2011, 01:08     Не работает gets() #3
C++
1
2
cin>>asi;
cin.ignore();
Arahn
Сообщений: n/a
18.06.2011, 11:12     Не работает gets() #4
Цитата Сообщение от OstapBender Посмотреть сообщение
C++
1
2
cin>>asi;
cin.ignore();
Спасибо помогло а то мучился весь вечер)
rambayke
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71
02.08.2012, 05:07     Не работает gets() #5
всем привет! такая ситуация:
перед тем, как ввести стоку, нужно нажать на .
потом, когда я беру строку, почему-то первой буквы нет.
я ввожу, например, слово "дом" после ENTER’а, а он выводит тока "ом". почему?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        if(kbhit()) 
        {
            
                                int cr = getc(stdin);
        while(cr == 10)
        {
            printf("<ENTER>");
            cr = getc(stdin);
        }
 
        char s[20];
        gets(s);
        printf("text: %s\n",s);
        
        
        }
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.08.2012, 06:06     Не работает gets() #6
Для Arahn : http://cppstudy.wordpress.com/2009/0...in-get-and-co/

Добавлено через 11 минут
Цитата Сообщение от rambayke Посмотреть сообщение
почему?
cr = getc(stdin) извлекает символ из потока в cr, поэтому gets(s); извлекает на один символ меньше.
C++
1
printf("text: %c%s\n", cr, s);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2012, 07:30     Не работает gets()
Еще ссылки по теме:

C++ setprecision() не работает, или работает не так как нужно
Работает в онлайн компиляторах, но не работает у меня C++
Как это работает? Я хочу спросить как работает C++ и где можно про него почитать C++

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

Или воспользуйтесь поиском по форуму:
rambayke
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71
02.08.2012, 07:30     Не работает gets() #7
Огромнейшее спасибо! все работает!
Yandex
Объявления
02.08.2012, 07:30     Не работает gets()
Ответ Создать тему
Опции темы

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