Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Помогите плиз начинающему Си-юзеру

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Gir
Гость





СообщениеДобавлено: Вс Окт 03 2004 18:53    Заголовок сообщения: Помогите плиз начинающему Си-юзеру Ответить с цитатой

Вопрос вот в чем: как без использования указателей решить вот такую проблему:
Считать с stdin все строки (неогр. размера), длина которых больше 50 символов и вывести их в stdout???
Вернуться к началу
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Вс Окт 03 2004 20:01    Заголовок сообщения: Ответить с цитатой

Не до конца сформулирована задача. Надо вывести ВСЕ СТРОКИ или только те, которые более 50-ти символов?

Если второе, то примерно так:

Выделяем массив на 50 символов. char str[50];
Читаем по одному символу из stdin. Признаком конца строки яв-ся \n.
Если на 50-м символе так и не встретился \n, то выставляем флажок (например переменную с именем is_more_50 в 1).
Перед чтением следующего символа опять проверяем на наличие \n, если его нет и is_more_50=1, то выводим символ в stdout.
Если все же встретился \n, то выводим его тоже на экран, в is_more_50 сбрасываем в ноль.

Естественно все это в цикле и не забыть is_more_50 в самом начале программы инициализовать в 0.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Trek
Гость





СообщениеДобавлено: Чт Окт 07 2004 17:48    Заголовок сообщения: Ответить с цитатой

and3008 писал(а):
Не до конца сформулирована задача. Надо вывести ВСЕ СТРОКИ или только те, которые более 50-ти символов?

Если второе, то примерно так:

Выделяем массив на 50 символов. char str[50];
Читаем по одному символу из stdin. Признаком конца строки яв-ся \n.
Если на 50-м символе так и не встретился \n, то выставляем флажок (например переменную с именем is_more_50 в 1).
Перед чтением следующего символа опять проверяем на наличие \n, если его нет и is_more_50=1, то выводим символ в stdout.
Если все же встретился \n, то выводим его тоже на экран, в is_more_50 сбрасываем в ноль.

Естественно все это в цикле и не забыть is_more_50 в самом начале программы инициализовать в 0.


Тогда ведь строки, кот . более 50 симв. сразу будут печататься в stdout. А автор, как я понял, хочет (если все-таки твой 2-ой вариант), чтобы строки только после окончания всего ввода вывелись на экран???
Вернуться к началу
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Чт Окт 07 2004 20:33    Заголовок сообщения: Ответить с цитатой

Ага. А хранить он их где будет? А если строка и после 4 Гига не кончится? Всё? Система встала?
Не, если эту прогу запускать на Win2000 DataCenter или каком UNIX-овом майнфрейме, то гиг 10-100 можно себе позволить.
Только для этой "высокоинтелектуальной" программы надо будет выложить несколько миллионов мертвых президентов.

Не надо самому себе придумывать сложности и надеяться на авось.
Авось в данном случае заключается в предположении что строка будет не более ___ байт (нужное вписать). Это порочная практика вылезает потом в багах, заключающихся в переполнении буфера, стека, утечках памяти и прочими глюками со всеми вытекающими последствиями.

Надо думать хотя бы на шаг вперед, чтобы потом не делать два шага назад.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Gir
Гость





СообщениеДобавлено: Пт Окт 08 2004 16:25    Заголовок сообщения: Ответить с цитатой

and3008 писал(а):
Ага. А хранить он их где будет? А если строка и после 4 Гига не кончится? Всё? Система встала?
Не, если эту прогу запускать на Win2000 DataCenter или каком UNIX-овом майнфрейме, то гиг 10-100 можно себе позволить.
Только для этой "высокоинтелектуальной" программы надо будет выложить несколько миллионов мертвых президентов.

Не надо самому себе придумывать сложности и надеяться на авось.
Авось в данном случае заключается в предположении что строка будет не более ___ байт (нужное вписать). Это порочная практика вылезает потом в багах, заключающихся в переполнении буфера, стека, утечках памяти и прочими глюками со всеми вытекающими последствиями.

Надо думать хотя бы на шаг вперед, чтобы потом не делать два шага назад.



Спасибо за помощь, очень пригодилась!
Вернуться к началу
Piple
Гость





СообщениеДобавлено: Вт Окт 12 2004 13:05    Заголовок сообщения: exe-формат Ответить с цитатой

где можно почитать о exe-формате(о его структуре)
Вернуться к началу
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Вт Окт 12 2004 13:53    Заголовок сообщения: Ответить с цитатой

www.google.com вроде еще жив.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...