Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/33: Рейтинг темы: голосов - 33, средняя оценка - 4.64
Супер-модератор
8727 / 2402 / 138
Регистрация: 07.03.2007
Сообщений: 11,522
1

cin vs scanf

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

Народ, объясните мне, почему многие предпочитают функцию scanf? ИМХО, cin для ввода данных гораздо проще... Может кто знает, что да как, да меня просветит темного.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2009, 10:48
Ответы с готовыми решениями:

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

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

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

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

30
Почетный модератор
7265 / 2542 / 256
Регистрация: 29.07.2006
Сообщений: 13,468
20.03.2009, 11:21 2
Отлично реализован форматированный ввод. Да и С это мне С больше нравится, чем С++.
0
Эксперт С++
2250 / 765 / 25
Регистрация: 27.05.2008
Сообщений: 1,497
20.03.2009, 11:22 3
Время от времени использую sscanf, sprintf. Удобные штуки.
0
Супер-модератор
8727 / 2402 / 138
Регистрация: 07.03.2007
Сообщений: 11,522
20.03.2009, 11:25  [ТС] 4
всегда мне говорили не мешай в кучу с и с++...
0
Почетный модератор
7265 / 2542 / 256
Регистрация: 29.07.2006
Сообщений: 13,468
20.03.2009, 11:57 5
Правильно говорили
Потому что в С++ я использую cin
0
Супер-модератор
8727 / 2402 / 138
Регистрация: 07.03.2007
Сообщений: 11,522
20.03.2009, 12:01  [ТС] 6
Vourhey, ну я еще не волшебник, только учусь))) просто со сканфом вечно траблы... юзаю только, когда не лень помогать студентам на форуме, вот и всех тонкостей не знаю...


а еще, Vourhey, ты знаешь, почему нельзя их мешать эти два языка?
0
Почетный модератор
7265 / 2542 / 256
Регистрация: 29.07.2006
Сообщений: 13,468
20.03.2009, 13:06 7
Да почему, можно. Но некрасиво.
Если ты подключил, например, iostream со своими потоками, то зачем подключать, например, stdio, который опять для себя откроет strin, stdout и т. д? Смысла нет.
0
Супер-модератор
8727 / 2402 / 138
Регистрация: 07.03.2007
Сообщений: 11,522
20.03.2009, 13:50  [ТС] 8
я просто слышал, что такое лучше не делать... понятное дело, что можно... просто думал есть какие-то причины избегать этого, глобальные и зловещие)))
я слышал что-то про возможные проблемы из-за возможности переопределения функций в с++... вот про си точно не знаю, но вроде бы нет такой возможности
0
4845 / 3266 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
20.03.2009, 13:53 9
http://bookc.narod.ru/bb13.html

насчёт cin не знаю, так как не изучал
0
Флудер
193 / 31 / 11
Регистрация: 23.03.2007
Сообщений: 334
20.03.2009, 18:15 10
scanf использовать удобней, ибо понятней как он работает с типами данных.
так же как и printf.
а потоки уже давненько не применял, т.к. негде.

Помню давным-давно "врачи" мне посоветовали использовать printf.
0
682 / 231 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
20.03.2009, 19:31 11
кто на Си шкодит вот им и scanf
да он и побыстрее,ручное форматирование
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
22.01.2011, 21:37 12
нужно ввести три числа разделенные '/'
в случае со scanf( " %d/%d/%d ", &a, &b, &c); все вроде просто.
а как быть с cin?
0
238 / 116 / 14
Регистрация: 15.10.2010
Сообщений: 395
22.01.2011, 22:12 13
Цитата Сообщение от no0ker Посмотреть сообщение
нужно ввести три числа разделенные '/'
Как часто тебе требуется ввести три числа, разделенные '/' ?

Добавлено через 50 секунд
обычно вводим числа через пробел или через Enter. И причем тут '/' ?
0
бжни
2467 / 1676 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.01.2011, 22:17 14
RUSya82, дата например
потом через потоки все таки довольно неудобно выводить, манипуляторы прямо не самое удобное, что придумали в жизни
stringstream довольно тяжеловесная замена sprintf
вообщем я не понимаю фанатизма когда нельзя использовать printf
а вот со scanf'ом еще можно подумать
0
no0ker
22.01.2011, 22:18
  #15

Не по теме:



RUSya82, не часто. но бывает.

alex_x_x, ну ты телепат! =)

0
238 / 116 / 14
Регистрация: 15.10.2010
Сообщений: 395
22.01.2011, 22:43 16
Ну да, наверное вы в чем то правы, но в большинстве программ( а писал я только по учёбе), мне было проще использовать cin, чем scanf.
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
22.01.2011, 22:50 17
Большинство использующих сишные функции просто не понимают идеологии С++ (или просто не дружат со стандартной библиотекой ). Преимущество потокового ввода - строгая типизация и защита от потенциальных ошибок, а семейство функций print/scan работают с переменными как с сырой памятью, слабо типизированы и подвержены ошибкам. Ну а тем кому охота разбирать строки - С++ предоставляет reg exp.
0
бжни
2467 / 1676 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
22.01.2011, 23:11 18
ну вообщем единственная проблема безопасность, ну я помню подобная тема была
все сошлись, что когда появятся шаблоны с переменным числом параметров - всем будет щастье
0
3050 / 1455 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
22.01.2011, 23:41 19
У обоих подходов есть плюсы и минусы. Использование той или иной технологии должно базироваться на разумности и соответствии поставленной задаче. Не стоит так же забывать об унификаци и стайл гайдах проекта.
Смешивание тоже может быть полезно. Например, логирование хорошо реализуется при помощи потоков, а интернационализация облегчается при использовании stdio за счет динамического позиционирования переменных.
0
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
23.01.2011, 09:07 20
может быть вот так?
C++
1
2
3
char i; 
int a, b;
cin >> a >> i >> b;
Добавлено через 15 секунд
может быть вот так?
C++
1
2
3
char i; 
int a, b;
cin >> a >> i >> b;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2011, 09:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Scanf vs cin (double variant)
double k = 0.0; scanf("%f", &k); double k1 = 0.0 cin >> k1; Вводим -1,5. Получаем: k =...

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

Заменить cin / cout на scanf / printf
#include<iostream> #include<locale.h> #include<Windows.h> #include<string> #include "123.h"...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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