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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
[WRG]
51 / 51 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
#1

чтение строк, scanf() - C++

04.02.2013, 21:43. Просмотров 745. Ответов 8
Метки нет (Все метки)

Код
scanf("%20s", str1);
такой код считает первые 20 символов, введенных с клавиатуры в переменную str1.
если сразу после этого запустить вот это
Код
scanf("%s", str2)
то в переменную str2 попадет все, что осталось после чтения 20и символов в переменную str1.
как сделать чтобы после чтения 20 символов ничего не оставалось, сразу можно было считывать свежевведённую строку?

З.Ы. можно ли вобще использовать printf и scanf в c++ программах? позволяет ли такое хороший тон программирования? или всё же нужно по каким-то причинам использовать cout и cin?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 21:43     чтение строк, scanf()
Посмотрите здесь:

Чтение данных ф - ей scanf - C++
Добрый вечер. Подскажите, почему в программе не получается правильно считать число ф - ей scanf? #include <iostream> using namespace...

Чтение чисел через scanf - C++
Хоть убей не могу заставить корректно работать функцию scanf. Стоит простая задача: ввести 2 числа и прочитать их. Но по непонятной мне...

Запись/чтение полей классов с помощью scanf/printf - C++
Привет всем! На прошлой неделе начали учить С++,и из за того что мы параллельно учим Си - учитель сказал что нам лучше использовать...

чтение строк - C++
как scanf читать строку не до первого пробела а до конца?

чтение строк - C++
на вход подаюсть строки... мне их нужно читать до символа * скоко строк не известно и букв тоже...как это сделать? я пишу while (str!="*") ...

Чтение хешированных строк - C++
Здравствуйте, помогите пожалуйста разобраться в вопросе. С помощью хеш-функции unsigned int HashFAQ6(const char * str) { ...

Чтение строк из потока - C++
Доброго времени суток всем! Вопрос мой заключается в том, правильно ли я понял суть задания. Мне нужно создать класс, который сможет...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
04.02.2013, 21:48     чтение строк, scanf() #2
fflush(stdin);
[WRG]
51 / 51 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
04.02.2013, 22:31  [ТС]     чтение строк, scanf() #3
не, не работает, пробовал. сишные функции не связаны с потоками ввода и вывода c++ или не?

Добавлено через 32 минуты
нашел решение
Код
scanf("%20s%*s", str);
по идее должен считывать после считывания 20 символов все остальные и никуда их не записывать, таким образом введенная строка читается полностью.
но есть одна проблемка, программа ведет себя некорректно, если введенная строка короче чем 20 символов, и программа ждет еще чего то на ввод, ведь %*s ничего не досталось, когда вся строка влезла в str. помогите разобраться как быть.
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
04.02.2013, 22:45     чтение строк, scanf() #4
[WRG], использовать можно, но это не приветствуется. Это равносильно тому, что если бы у Вас в гараже стоял мерседес, а вы бы на работу ездили на велосипеде.
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
05.02.2013, 02:57     чтение строк, scanf() #5
Цитата Сообщение от [WRG
;4093613]не, не работает, пробовал. сишные функции не связаны с потоками ввода и вывода c++ или не?
Компилирует хотя бы ?

scanf() - не связан с потоками ввода\вывода С++, поэтому и кинул Сишную функцию fflush(stdin);
[WRG]
51 / 51 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
05.02.2013, 11:27  [ТС]     чтение строк, scanf() #6
компилировать то компилирует, а эффекту ноль. компилятор gcc-4.7
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
05.02.2013, 11:29     чтение строк, scanf() #7
Можно весь код глянуть?
[WRG]
51 / 51 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
05.02.2013, 15:09  [ТС]     чтение строк, scanf() #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstdio>
 
int main()
{
    char str1[20], str2[100];
    
    printf("-> ");
    scanf("%20s", str1); fflush(stdin);
    
    scanf("%s", str2);
    
    printf("%s   %s", str1, str2);
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2013, 08:40     чтение строк, scanf()
Еще ссылки по теме:

Чтение строк из файла - C++
Есть файл с 10 строками, необходимо вывести на экран четные строки ifstream file(&quot;C:\\1.txt&quot;); for (int i = 0; i &lt; 5; i++) { ...

Чтение строк из файла - C++
Добрый день имеется ряд вопросов касательно чтения строк из текстового файла. В папке с программой содержится файл TEST.TXT, в котором...

Чтение последних 10 строк - C++
Подскажите алгоритм вывода нескольких последних строк из большого файла (~1GB). Построчное чтение и вывод только последних строк тут явно...

Чтение нескольких строк - C++
Подскажите пожалуйста как сделать следующее: дан файл в котором 2 строки. Первую из этих строк записать в str1, вторую в str2. Строки...

Чтение строк из файла - C++
Мне нужно читать строки из фалйа разной длинны тоесть может быть вобще пустая строка. нужно именно c++ не c


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
07.02.2013, 08:40     чтение строк, scanf() #9
Во-первых, fflush(stdin) ведёт к UB.
Во-вторых, у меня всё компилируется, запускается и выводится как надо.
Yandex
Объявления
07.02.2013, 08:40     чтение строк, scanf()
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru