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

Заполнение строки через функцию - C++

Восстановить пароль Регистрация
 
19n1ght
2 / 2 / 0
Регистрация: 13.02.2013
Сообщений: 15
13.02.2013, 02:35     Заполнение строки через функцию #1
Добрый день!

При вызове функции f1 оператор cin.getline не срабатывает. На экране отображается одна пустая строка (следствие функции puts), после чего программа завершает работу. При использовании gets вместо cin.getline происходит тоже самое.
Во второй функции f2 оператор cin срабатывает, но он не позволяет записать в массив string2 более одного слова. Это не подходит.

Как мне сделать так, чтобы по вызову функции из void main'а я мог ввести несколько слов в строку?

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
#include <iostream>
#define size 30
using namespace std;
 
#include <iostream>
#define size 30
using namespace std;
 
void f1 () {
    char string1[size];
    cin.getline (string1, size);
    puts (string1);
}
void f2 () {
    char string2[size];
    cin >> string2;
    puts (string2);
}
void main () {
    int key;
    cin >> key;
 
    switch (key) {
    case 1: f1(); break;
    case 2: f2(); break;
    default: break;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 02:35     Заполнение строки через функцию
Посмотрите здесь:

C++ Заполнение структуры через rand
Заполнение структуры через функцию C++
Степень вывести через указатель,a десятичный логарифм через функцию рекуренционную C++
Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN() C++
C++ Удаление из строки повторяющихся элементов (через функцию)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1438 / 652 / 86
Регистрация: 03.06.2009
Сообщений: 3,295
Завершенные тесты: 1
13.02.2013, 10:01     Заполнение строки через функцию #2
Топорный способ: перед cin.getline или gets добавьте fflush(stdin);
Это происходит потому что cin >> key; не забирает последний символ перевода строки их входного потока, этот перевод хватает cin.getline как пустую строку.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
13.02.2013, 10:09     Заполнение строки через функцию #3
fflush - для С. Для cin - ignore
19n1ght
2 / 2 / 0
Регистрация: 13.02.2013
Сообщений: 15
13.02.2013, 13:42  [ТС]     Заполнение строки через функцию #4
Спасибо, помогло!
Yandex
Объявления
13.02.2013, 13:42     Заполнение строки через функцию
Ответ Создать тему
Опции темы

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