Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/46: Рейтинг темы: голосов - 46, средняя оценка - 4.87
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873

cin vs scanf

20.03.2009, 10:48. Показов 9811. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, объясните мне, почему многие предпочитают функцию scanf? ИМХО, cin для ввода данных гораздо проще... Может кто знает, что да как, да меня просветит темного.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2009, 10:48
Ответы с готовыми решениями:

Cin точнее scanf?
Здравствуйте. Во время написания кода и попытки понимания возникновения ошибки, отправил на проход тестов два идентичных кода, отличия были...

Операторы cin и scanf
Пример кода: void func(float* p){ cout << "Введите значение"; scanf("%f\n", &p); } Как можно прочитать ссылку через cin ? При...

Из scanf в std::cin
Как тоже самое сделать с помощью std::cin? printf("Введите автора %d книги.\n",i+1); scanf("%31s ",ar.author); ...

30
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.01.2011, 06:12
Студворк — интернет-сервис помощи студентам
no0ker, А почему нет-то? оО

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    int a;
    double b;
    char c;
 
    std::cin>>a>>b>>c;
    std::cout<<c<<' '<<b<<' '<<a<<'\n';
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12845 / 7594 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
24.01.2011, 13:05
На самом деле функции ввода/вывода С и С++ не сто'ит мешать совсем не только потому, что это "красивости" программе не прибавляет мягко говоря. И функции С и потоки С++ ввод/вывод буферизируют, при чём делают это по-своему. При достаточно фанатичном чередовании тех и других можно добиться того, что ввод, которого ждёт cin, "осел" в буфере, который использует scanf. Ну или обратный случай - вывод в cout перемешивается с выводом printf в какой-нибудь непредсказуемой последовательности. В любом случае - по-моему действительно лучше в С++ не использовать функции библиотеки С без крайней на то необходимости. Но если уж так привыкли к printf/scanf и хочется использовать их в программе на С++, то хотябы с cin/cout их мешать не нужно. Будьте последовательны!
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
24.01.2011, 16:08
ForEveR, в вашем примере переменные вводимые пользователем разделяются пробелами. а мне нужно '/'. =(

Добавлено через 3 минуты
easybudda, вы говорите разумные вещи. если бы можно было осуществить форматированный ввод (так что ли это называется...) используя исключительно 'cin>>', зачем бы он сдался - этот scanf().

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int main()
{
    int a,b,c;
    char t;
    std::cin >>a>>t>>b>>t>>c;
    // вводится 1/02/10
    std::cout<<"d-"<<a<<" m-"<<b<<" y-"<<c;
    // выводится d-1 m-02 y-10
}
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
24.01.2011, 16:23
Ну а как с помощью cin вывести число тип которого float, при этом вывестиодин знак до запятой, и 2 знака после запятой.
Например число Pi..... 3,1415.... хочу вывести cin чтобы было 3,14!
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
24.01.2011, 16:25
sfinexer, с помощью манипуляторов setprecision
cout << setprecision(2) << M_PI;
1
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
01.03.2011, 13:26
Цитата Сообщение от alex_x_x Посмотреть сообщение
sfinexer, с помощью манипуляторов setprecision
cout << setprecision(2) << M_PI;

У меня проблема с этой штукой(((
float u=1.99999;
cout << setprecision(2) << u;

Выдает двойку а не 1,99 как я хочу((((

Ну или 2,00
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
01.03.2011, 14:52
sfinexer, при установке точности на эн символов происходит не отбрасывание цифр начиная со следующей после эн, а округление числа. И это единственно верное решение, потому что иначе произойдёт потеря точности. Так что никакой «проблемы» тут нет, всё как надо.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12845 / 7594 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
01.03.2011, 15:20
Цитата Сообщение от sfinexer Посмотреть сообщение
cout << setprecision(2) << u;
Выдает двойку а не 1,99 как я хочу
C
1
printf("%.2f", 1.9999999);
тоже 2.00 выведет.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
01.03.2011, 15:32
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
printf("%.2f", 1.9999999);
тоже 2.00 выведет.
Но у меня выдает 2 а не 2,00 вот в чем проблема.....
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12845 / 7594 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
01.03.2011, 15:56
Цитата Сообщение от sfinexer Посмотреть сообщение
Но у меня выдает 2 а не 2,00 вот в чем проблема.....
C++
1
2
3
4
5
6
7
#include <iostream>
#include <iomanip>
 
int main(){
  std::cout << std::fixed << std::setprecision(2) << 1.999999 << std::endl;
  return 0;
}
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
01.03.2011, 20:07
Цитата Сообщение от easybudda Посмотреть сообщение
C++
1
2
3
4
5
6
7
#include <iostream>
#include <iomanip>
 
int main(){
  std::cout << std::fixed << std::setprecision(2) << 1.999999 << std::endl;
  return 0;
}
Компилятор у меня ругается на file.setprecision file это файловый поток, файл открыт ранее.
Иными словами, у меня таблица порядка 50 значений надо туда записать (там многое в цикле).

Но 50 раз писать setprecision(2) который тоже вобщето както странновато работает, и он работает только для последующего выводимого значения, иными словами это усложнит программу.
Я хочу написать.
file.fixed;
file.precision(2);
И дальше уже file<<ЧИСЛО;

Но у меня при этом число выводится без плавающей запятой.
Если вывести переменную которая равна 0,0005488
Оно выведет и нули, а мне надо степень, ибо числа разные.
Надо вывести 4 значащих цифры и степень.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2011, 20:07

Переделаем вместе scanf() в cin>>
Был исходник: void Comp::Get() // Ввод данных с клавиатуры =) { printf (&quot;\n Введите действительную часть числа &quot;); scanf...

Scanf vs cin (double variant)
double k = 0.0; scanf(&quot;%f&quot;, &amp;k); double k1 = 0.0 cin &gt;&gt; k1; Вводим -1,5. Получаем: k = 1.589424581709e-314#DEN double k1...

Заменить cin cout на printf scanf
Преподаватель не хочет принимать код по минимальному основанию системы счисления , из-за того, что вместо функций printf и scanf были...

Заменить cin / cout на scanf / printf
#include&lt;iostream&gt; #include&lt;locale.h&gt; #include&lt;Windows.h&gt; #include&lt;string&gt; #include &quot;123.h&quot; using namespace std; float...

Переделать scanf и printf в cin и cout
#include &quot;stdio.h&quot; #include &quot;math.h&quot; int main() { float S=0; int n=3; printf(&quot;For\n&quot;); for (n=3; n &lt;= 9;...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru