Конспект по Си. Разбираем первую программу.

Feb 17, 2013 20:03


Теперь приступаем к разбору первой программы.

В строке

#include

находится директива препроцессора #include (директивы препроцессора начинаются с символа "#" - "решётка", или "номер" )

"include" означает "включить", то есть - "включить в состав программы заголовочный файл "stdio.h"(h - header, заголовок)

В свою очередь, в файле stdio.h определены ( Read more... )

это интересно, язык си, #include, программирование, линукс

Leave a comment

Comments 7

tarkhil February 17 2013, 18:54:19 UTC
Еще раз, с начала. stdio не работает не то, что с клавиатурой/дисплеем, он даже на работу с терминалом не заточен.

Это ФАЙЛОВЫЙ ввод-вывод с буферизацией на уровне пользовательской программы

Reply

rex_lockheart February 17 2013, 20:24:05 UTC
И что?
Где здесь противоречие с моими словами?

У меня сказано буквально:

Напоминаю, что язык Си создавался для Unix, а в юниксе стандартными средствами ввода-вывода являются соответственно клавиатура и дисплей. Именно эти функции и включает заголовочный файл stdio.h

Где тут утверждение, что библиотека или заголовочный файл работает напрямую с терминалом?
Или мне следовало расписать всё подробнее?
Разумеется, в stdio.h только определено, что ввод данных программа получит из файла, соответствующего клавиатуре, а вывод будет на файл, представляющий дисплей.
Но это, извините, то же самое, что при описании диссоциации воды в школьнорм курсе химии не вводить детям абстрактное понятие иона водорода H+, а сразу загружать мозги реальным ионом гидроксония H3O+Вот вы знали из школьного курса химии о такой штуке, как ион гидроксония? Да я на 99,999% уверен, что вы и сегодня впервые о нём услышали, такие подробности вам в жизни никогда не были нужны, а в школе - и подавно ( ... )

Reply

tarkhil February 19 2013, 12:16:43 UTC
Нигде и никогда "клавиатура" и "дисплей" устройствами ввода-вывода в UNIX'е не были. Был терминал, или эмулятор терминала, как putty/xterm/прочие.

Функции, включенные в stdio.h - это просто файловый ввод-вывод с буферизацией. Не верите мне - прочтите КиР.

Впрочем, pearl casting mode off. Спрашивайте melkorbsd.

Reply


pan_szymanowski February 17 2013, 20:33:59 UTC
Ну хорошо, а почему оно фиговую фразу печатает? А ведь можно было такую программу рассмотреть:

printf("Слава КПСС!\n");
или там...
printf("Мы придем к победе коммунистического труда!\n");

Reply

rex_lockheart February 17 2013, 20:54:52 UTC
Традиция! )))

К тому же я не был уверен, что gcc без проблем выведет кириллицу - до этого я экспериментировал с QT Creator, и что-то не заладилось...
Хотя попробовать можно )))

Reply

pan_szymanowski February 17 2013, 21:13:04 UTC
Нормально работает. Только нужно, чтобы кодировка экрана совпадала с кодировкой текстового файла - исходника.

Reply

tarkhil February 19 2013, 12:18:31 UTC
gcc знать не знает, что такое кириллица. Если кириллица не выдается нормально - значит, либо шрифты, либо системная кодировка не настроена.

Вариант - консольная программа создается под винды. Там стоит целая куча граблей, побеждать которую очень сложно и совершенно не нужно.

Reply


Leave a comment

Up