Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: (printf и scanf) или (cout и cin)  (Прочитано 31191 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 22-12-2004 03:01 » 

Что лучше использовать (printf и scanf) или (cout и cin)?
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 22-12-2004 10:34 » 

я бы порекомендовал использовать стандартные потоки.

Основной плюс -- перегрузка операторов ввода/вывода. 

Нет необходимости при выводе сначала переводить объект в строковое представление и потом распечатывать полученную строку.
Аналогично при вводе не нужно самому разбирать строку. Уменьшается вероятность ошибки при переводах.

Дополнительный бонус потоков ввода/вывода -- контроль типов.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #2 : 22-12-2004 14:18 » 

А я как-то пожизни пользуюсь printf и т.д. и крайне редко прямыми потоками!

Прична проста я редко работаю со тандартными потоками всерьез - все чаще терминал сидит где то на удалении!!!

Кроме того - ИМХО разумеется - нет разницы по скорости работы так как stdio потоки всегда готовы принять строку - которую printf всегда выкидывает по умолчанию именно в стандартный поток и соответственно наоборот прием тоже всегда принимает из стандартного потока по умолчанию!!!
Записан

А птичку нашу прошу не обижать!!!
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 22-12-2004 14:59 » 

Я имел в виду не потоки билиотеки C (stdio.h -- stdin, stdout) а потоки стандартной библиотеки С++ (iostream -- std::cin, std::cout)

Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
DaN(DR)
Гость
« Ответ #4 : 09-06-2006 09:46 » 

Что за функция scanf и какие у нее есть значения (т.е. я в одной scanf видел "%s", и не знаю что это означает)?
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 09-06-2006 10:18 » 

Функция С работы со стандартным потоком ввода. То что ты видел - это строка формата. Про строки формата можно прочитать здесь http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_format_specification_fields_.2d_.scanf_and_wscanf_functions.asp
и здесь http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_scanf_type_field_characters.asp

А вообще лучше сразу смотреть MSDN; значительно быстрее найдешь ответ, чем получишь его на форуме, даже при самой благоприятной обстановке Ага
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Tuborg
Команда клуба

ee
Offline Offline

« Ответ #6 : 09-06-2006 11:22 » 

Я бы тоже высказался за iostream, но его нельзя пользовать, если перегружаешь прерывания таймера и  винчестера (внутри обработчика), там лучше printf юзать.
Записан
DaN(DR)
Гость
« Ответ #7 : 07-12-2006 16:43 » 

У меня такой вопрос:
Мне надо записать в файл два числа, у обоих тип - unsigned long. Какой параметр нужно написать в fprintf (вместо %d)?

fprintf(f, "%d %d\n", tmp->client_id, tmp->prev_time);

Искал в MSDN, но единственное, что нашел - unsigned int;
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #8 : 07-12-2006 17:05 » 

в твоем случае это может быть одно  тоже
Записан

Удачного всем кодинга! -=x[PooH]x=-
DaN(DR)
Гость
« Ответ #9 : 07-12-2006 17:22 » 

К сожалению, нет. Вот что пишет компилятор:
tmp/3498.cpp: In member function `void list::Bye(FILE*)':

tmp/3498.cpp:277: warning: unsigned int format, long int arg (arg 3)

tmp/3498.cpp:277: warning: unsigned int format, long int arg (arg 4)
« Последнее редактирование: 16-12-2007 18:36 от Алексей1153++ » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #10 : 07-12-2006 18:30 » 

ну это всего лишь варнинги, напиши перед переменной "(unsigned int)"
Записан

Удачного всем кодинга! -=x[PooH]x=-
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 07-12-2006 19:21 » 

Формат для unsigned long - "%lu".
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #12 : 08-12-2006 07:55 » 

Olegator, а какова цель применения 1-го и 2-го.
При ввод пользователя обрабатывать или что иное.
я бы выбрал различные решенья для различных ситуция, но чаще это был бы iostream
Записан

Странно всё это....
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #13 : 25-12-2006 23:32 » 

Что за функция scanf и какие у нее есть значения (т.е. я в одной scanf видел "%s", и не знаю что это означает)?
DaN(DR),
Функция scanf , читает литеры из стандартного входного потока, потока, интерпретирует их согласно спецификациям стринга format  "%s" , Это спецыфекатор означает стринг литер (без обрамляющих кавычек);char *, указывающий на массив литер, достаточный для стринга и завершающей литеры’\0’, которая будет добавлена.
Маленький пример из книги язык программирования Си Б.В. Керниган, Д.М. Ричи.
Предположим, что нам нужно прочитать строки ввода, содержание данного вида
25 дек 1988
Обращения к scanf выглядит следующим образом:
Int day, year;/*день, год*/
Char monthame [20];/*название месяца*\
Scanf(“%d%s%d”, &day, monthame, &year);
Эту книжку можно скачать вот отсюда  <вырезано>, к сожалению прямая силка затерялась, вот еще
<вырезано> один сайт где можно скачать книги по С,С++   
 
По твоим ссылкам никаких "скачать" нет! Выкладывай пожалуйста прямые ссылки на книги или на страницы, на которых лежат ссылки именно на указанные книги. За то полно ссылок на ozon - хоть и не "скачать", но мог бы прямые ссылки дать.
             
« Последнее редактирование: 26-12-2006 06:23 от RXL » Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #14 : 26-12-2006 22:03 » 

Приму к соединю.   
« Последнее редактирование: 26-12-2006 22:23 от Diskriptor » Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Diskriptor
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #15 : 26-12-2006 22:20 » 

DaN(DR),
Вот  ссылка на Керниган Б.В. и Ричи Д.М. Язык C http://www.eboogle.ru/List.aspx?p=8310
« Последнее редактирование: 26-12-2006 22:34 от Diskriptor » Записан

Единственный способ, научится программировать на каком либо языке программирования, это писать на этом языке программы.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 10-01-2007 12:56 » new

На счет того что лучше использовать stdout, stdin или cout, cin, я для себя так решил.

Если пишу на С++(.cpp) то и пишу в стиле С++. Т.е. пользуюсь тем что дает именно С++: потоками cout, cin; связками try, throw, catch; inline; все что можно (и не можно  Улыбаюсь ), упаковываю в объекты и по максимому пытаюсь использовать библиотеку STL. И не позволяю себе использовать чтото типа такого: printf, longjmp и все то что пресуще C.

Если пишу на С(.с) то и пишу на С.  Улыбаюсь

И Вы знаете, после этого мне как-то намного приятней и спокойней стало смотреть на все мои "творения".  Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines