Изучение С
Модератор: Модераторы разделов
-
- Сообщения: 702
- ОС: Gentoo
Изучение С
Привет, all.
Я занимался изучением С еще в виндовсе на компиляторе Borland 3.1 для дос. Не сильно продвинулся, но в связи с переходом на линукс решил всерьез заняться изучением этого языка уже на данной платформе. Учил по книге Кернигана и Ритчи. Решил скомпилировать - не вышло. Не знаю даже как и что именно искать по сабжу, поэтому решил запостить здесь. Компилировал (неудачно) с помошью gcc.
В общем, как обрабатывать код, написанный на классическом С (ansi) через gcc, чтобы в итоге получился исполняемый файл? То есть никакого cout, iostream и прочего, о чем обычно пишут на форуме.
P.S. если подскажите учебник (именно учебник, а не тех документацию или справочник) по языку С (а не С++) для linux(/unix), буду очень признателен.
Заранее спасибо.
Я занимался изучением С еще в виндовсе на компиляторе Borland 3.1 для дос. Не сильно продвинулся, но в связи с переходом на линукс решил всерьез заняться изучением этого языка уже на данной платформе. Учил по книге Кернигана и Ритчи. Решил скомпилировать - не вышло. Не знаю даже как и что именно искать по сабжу, поэтому решил запостить здесь. Компилировал (неудачно) с помошью gcc.
В общем, как обрабатывать код, написанный на классическом С (ansi) через gcc, чтобы в итоге получился исполняемый файл? То есть никакого cout, iostream и прочего, о чем обычно пишут на форуме.
P.S. если подскажите учебник (именно учебник, а не тех документацию или справочник) по языку С (а не С++) для linux(/unix), буду очень признателен.
Заранее спасибо.
Дорогу осилит идущий
-
- Сообщения: 1073
- Статус: столлманист
- ОС: Debian GNU/Linux
Re: Изучение С
Тот же Керниган с Ричи

А еще класика: Керниган и Пайк "Программное окружение UNIX";
Митчел, Оулдем, Самьюэл "Программирование для Linux. Профессиональный подход".
Мне они очень понравились

"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
М. В. Ломоносов
-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
Voice,
боюсь, рановато мне профессиональным подходом заниматься. (=
О "программном окружении" слышал много хорошего, но не совсем понял, о чем эта книга. Это же вроде не учебник по С? Или нет?
книга хорошая, но я имел в виду С под линукс совсем для нубов. (= Типа откройте bash и напишите там gcc -o бла-бла-бла...
Что-нибудь такое?
Митчел, Оулдем, Самьюэл "Программирование для Linux. Профессиональный подход".
боюсь, рановато мне профессиональным подходом заниматься. (=
О "программном окружении" слышал много хорошего, но не совсем понял, о чем эта книга. Это же вроде не учебник по С? Или нет?
Тот же Керниган с Ричи
книга хорошая, но я имел в виду С под линукс совсем для нубов. (= Типа откройте bash и напишите там gcc -o бла-бла-бла...
Что-нибудь такое?
Дорогу осилит идущий
-
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Изучение С
Код: Выделить всё
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("Hello World!!!\n");
return 0;
}
Код: Выделить всё
ed@edwards-desktop:~/Documents/Developing/tmp$ gcc ./main.c -o tmp
ed@edwards-desktop:~/Documents/Developing/tmp$ ./tmp
Hello World!!!
ed@edwards-desktop:~/Documents/Developing/tmp$
Книга нужна одна: man gcc.
P.S. Это с учётом, что K&R читалось.
В дисгармонии со вселенной.
-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
eduard_pustobaev,
не знаю... какое-то отторжение у меня от манов. На мой взгляд, полезно в них заглянуть, чтобы постмотреть, что делает та или иная опция. В качестве руководства, я бы предпочел книгу.
eduard_pustobaev,
K&R читалась не до конца)
eduard_pustobaev,
ты читал Кернигана и Пайка "Программное окружение UNIX"? Можешь что-нибудь сказать о ней?
Книга нужна одна: man gcc.
не знаю... какое-то отторжение у меня от манов. На мой взгляд, полезно в них заглянуть, чтобы постмотреть, что делает та или иная опция. В качестве руководства, я бы предпочел книгу.
eduard_pustobaev,
Это с учётом, что K&R читалось
K&R читалась не до конца)
eduard_pustobaev,
ты читал Кернигана и Пайка "Программное окружение UNIX"? Можешь что-нибудь сказать о ней?
Дорогу осилит идущий
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
Encou писал(а): ↑23.09.2007 17:12В общем, как обрабатывать код, написанный на классическом С (ansi) через gcc, чтобы в итоге получился исполняемый файл? То есть никакого cout, iostream и прочего, о чем обычно пишут на форуме.
P.S. если подскажите учебник (именно учебник, а не тех документацию или справочник) по языку С (а не С++) для linux(/unix), буду очень признателен.
Что есть "классический си" для меня не ясно. Есть древний си, Си89 и Си99. "Анси СИ" - относится обыкновенно ко второму, хотя последний из них тоже наверное в анси учтен.

GCC по дефолту пытается переваривать древний. Под остальные есть опции.
Для изучения К-Р вполне достаточно знания команды gcc имя_файла.с.
Остальная информация по компиляции-сборке-инфраструктуре накапливается опытом и траханьем, чтением факов и форумов, в путном виде ее ни разу нигде не встречал.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 807
- ОС: ubuntu
Re: Изучение С
Так может поподробнее раскажите что конкретно не получилось, какой код пытались скомпилировать, а то так трудно конкретные советы давать -- нужно же понять суть проблемы

-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
sergio,
Классно написано) То, что в путном виде ни разу не встречал, огорчает. Значит, руководства, которое я ищу, скорее всего нет...
sergeyvp,
это была какая-то простая задачка из книги Культина "С/С++ в задачах и примерах". А не получилось, т.к. вылезло много сообщений об ошибках, напр., об отсутствии stdio.h, conio.h и штук 5 чего-то еще (=
Пока всем спасибо. Ещё повожусь - если не получится - выложу здесь (=
Остальная информация по компиляции-сборке-инфраструктуре накапливается опытом и траханьем, чтением факов и форумов, в путном виде ее ни разу нигде не встречал.
Классно написано) То, что в путном виде ни разу не встречал, огорчает. Значит, руководства, которое я ищу, скорее всего нет...
sergeyvp,
Так может поподробнее раскажите что конкретно не получилось, какой код пытались скомпилировать, а то так трудно конкретные советы давать -- нужно же понять суть проблемы
это была какая-то простая задачка из книги Культина "С/С++ в задачах и примерах". А не получилось, т.к. вылезло много сообщений об ошибках, напр., об отсутствии stdio.h, conio.h и штук 5 чего-то еще (=
Пока всем спасибо. Ещё повожусь - если не получится - выложу здесь (=
Дорогу осилит идущий
-
- Сообщения: 807
- ОС: ubuntu
Re: Изучение С
Ну то есть в вашей системе не установлены заголовочные файлы для разработки, нужно их установить и всё собирётся.
Вот только меня смущает conio.h, вы точно примеры для чистого Си пытались компилировать?
Вроде как conio.h это заголовочный файл используемый в виндовс, то есть ваши примеры заточены под виндовс и вам лучше взять другую книгу.
Я например начинал изучать Си с книги для совсем чайников которая называется "Освой самостоятельно Си за 21 день", то есть освоить Си за 21 день у вас не получиться конечно но общее представление сформируется

-
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Изучение С
Я это к тому, что конкретно сам C такой самый, как и в винде. Отдельной кинги для изучения не нужно. Достаточно K&R. А как скомпилировать - это к документации к компилятору.
В дисгармонии со вселенной.
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
Encou писал(а): ↑23.09.2007 18:00Классно написано) То, что в путном виде ни разу не встречал, огорчает. Значит, руководства, которое я ищу, скорее всего нет...
это была какая-то простая задачка из книги Культина "С/С++ в задачах и примерах". А не получилось, т.к. вылезло много сообщений об ошибках, напр., об отсутствии stdio.h, conio.h и штук 5 чего-то еще (=
А так все-таки Культина, а не Кернигана, гыгы.

conio.h - заголовок из Борландовских компиляторов эпохи ДОС. В микрософтовом тоже было что-то похожее кажется.
Он обеспечивает вывод на экран используя функции БИОС, поэтому для практического применения не годится даже в виндовс9х, а в остальных системах о нем лучше забыть. Т.е. эмулировать его работу, сделав вывод на терминал не трудно, и наверное такие его "адаптации" существуют, но смысла в том никакого нет, патамушта в виндовсе в МСДН есть раздел по работе с терминалом и там свои функции, а в никсе есть ncurses и др. Из чего следует, что книжка ваша была не по Си, и тем более не по классическому, а по вполне конкретной реализации Си для ДОС.
Руководства, которые вы ищите, конешна есть. Но они почти всегда оказываются очень толстые и пытаются рассуждать о вещех, которых вы не знаете. А где узнать те вещи и найти введение-обзор, толкующий простым языком для новичков, - тайна великая есьм.

Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
sergeyvp,
в линуксе, разумеется?
как их установить? Хотя, вообще, странно, что их нет. Может они все-таки есть, и проблема в другом? Я ведь ставил пакеты из исходников - они компилировались без проблем.
sergio,
Вот это действительно печально. Читать ман к gcc, который состоит из 13 с фигом тыс. строк не хочется. %)
Нет. Я его использовал точно не для этого. Вывод на экран осуществляля средствами stdio.h.
Вряд ли все так плохо. Она считается хорошей. http://www.ozon.ru/context/detail/id/118715/
Большинство примеров из книги я компилировал без проблем.
в линуксе, разумеется?
Ну то есть в вашей системе не установлены заголовочные файлы для разработки, нужно их установить и всё собирётся
как их установить? Хотя, вообще, странно, что их нет. Может они все-таки есть, и проблема в другом? Я ведь ставил пакеты из исходников - они компилировались без проблем.
sergio,
Руководства, которые вы ищите, конешна есть. Но они почти всегда оказываются очень толстые и пытаются рассуждать о вещех, которых вы не знаете. А где узнать те вещи и найти введение-обзор, толкующий простым языком для новичков, - тайна великая есьм.
Вот это действительно печально. Читать ман к gcc, который состоит из 13 с фигом тыс. строк не хочется. %)
Он обеспечивает вывод на экран используя функции БИОС, поэтому для практического применения не годится даже в виндовс9х, а в остальных системах о нем лучше забыть
Нет. Я его использовал точно не для этого. Вывод на экран осуществляля средствами stdio.h.
книжка ваша была не по Си, и тем более не по классическому, а по вполне конкретной реализации Си для ДОС
Вряд ли все так плохо. Она считается хорошей. http://www.ozon.ru/context/detail/id/118715/
Дорогу осилит идущий
-
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Изучение С
Под винду кстати тоже curses есть, как миниум pdcurses...
В дисгармонии со вселенной.
-
- Сообщения: 807
- ОС: ubuntu
Re: Изучение С
Конечно в линуксе!

Читайте ту книгу которую я выше указал, она как раз является простым и доступным руководством, когда её прочтете сможете перейти к более продвинутым книгам.
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
Не знаю, для чего еще он мог там применяться (код покажите наконец, и сообщения компилятора об ошибках, чо мы тут на кофейной гуще гадаем, стоят заголовки не стоят заголовки и проч.), но в "классическом си" конио.хэ нету точно. =)))
По gcc вам достаточно этого:
-Wall
-c
-std=ansi
-std=c99
-o имя_выполнимого_файла
-s
ну и хватит для начала.
Погодя еще -I -L -l добавятся, но для К-Р они не нужны. =)
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 807
- ОС: ubuntu
Re: Изучение С
Попробуйте в консоли дать команду
find /usr -name stdio.h
если вывод будет примерно таким
/usr/include/stdio.h
/usr/include/bits/stdio.h
значит заголовочные файлы в системе действительно есть и проблема в чём-то другом
если такого вывода нет, значит их нужно установить, например с помощью пакетного менеджера вашей системы (зависит от дистрибутива)
-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
sergeyvp,
"простым и доступным руководством" под линукс или просто? Просто и Керниган идеально подходит. Просто не хочу трахаться с манами, форумами и факами. Хочу взять книгу и спокойно осваивать С для линукс.
"простым и доступным руководством" под линукс или просто? Просто и Керниган идеально подходит. Просто не хочу трахаться с манами, форумами и факами. Хочу взять книгу и спокойно осваивать С для линукс.

Дорогу осилит идущий
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
"Си для линукс" - это уже неправильный Си.

Правильный си - он един.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
sergio,
задачки для самостоятельного написания там есть? Потому что раньше я их брал из Культина, которого все забраковали)). :пафосно: А научиться программировать можно только программируя!
что-нибудь типа "С c gcc за 1001 ночь"
Бред конечно, понимаю)))
задачки для самостоятельного написания там есть? Потому что раньше я их брал из Культина, которого все забраковали)). :пафосно: А научиться программировать можно только программируя!

"Си для линукс" - это уже неправильный Си
что-нибудь типа "С c gcc за 1001 ночь"

Бред конечно, понимаю)))
Дорогу осилит идущий
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
Задачки можно брать где угодно. У К-Р есть, но (имхо) в основном дурные. Надо, чтоб теоретический материал был тем самым "классическим си", а не его дос/виндовс-диалектом. Новички сермяжной правды не знают, документацией пользоваться толком не умеют, и все эти конио-хренио их сбивают с толку, начинают искать проблему где ее отродясь не было.
Чево, код-то будет, который ошибку давал, не? =)
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
sergio,
(((= Пока не) Забью, что здесь написано в бэш) а потом посмотрим. Может и не было проблемы, просто компилятором пользоваться не умею, ибо руки кривые)
(((= Пока не) Забью, что здесь написано в бэш) а потом посмотрим. Может и не было проблемы, просто компилятором пользоваться не умею, ибо руки кривые)
начинают искать проблему где ее отродясь не было
Дорогу осилит идущий
-
- Сообщения: 807
- ОС: ubuntu
Re: Изучение С
Ну вобщем рассказываю как я изучаю Cи под Linux:
Примерно два года назад я тоже как и вы захотел научиться программировать на Си под Linux
Соответсвенно купил выше указанную книгу и просто стал читать и компилировать те примеры которые там указаны, ни каких проблем с компиляцией у меня не возникало.
Затем я купил "Полный справочник по Си" Г.Шилдт, в нём язык описывается более подробно.
Затем приобрёл "Программирование для UNIX" Марк Дж. Рочкинд в которой сделан уклон именно на системное программирование для UNIX, а также "UNIX разработка сетевых приложений" У.Р.Стивенс - это совсем продвинутая книга до неё вам и мне ещё далековато.

Параллельно я сделал несколько переводов в том числе библиотеки GLib которая является очень мощным расширением для Си.
Кстати в состав этой библиотеки входит GOBJECT которая позволяет использовать объектно ориентированные приёмы программирования используя при этом чистый Си. Если надумаете писать программу с графическим интерфейсом то рекомендую почитать про GTK+.
Мои переводы и много других вы можете найти на моём сайте который указан в подписи (не сочтите за рекламу).
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
sergeyvp писал(а): ↑23.09.2007 19:21Кстати в состав этой библиотеки входит GOBJECT которая позволяет использовать объектно ориентированные приёмы программирования используя при этом чистый Си. Если надумаете писать программу с графическим интерфейсом то рекомендую почитать про GTK+.
Мои переводы и много других вы можете найти на моём сайте который указан в подписи (не сочтите за рекламу).
Я вот аккрраз читаю. =)
Спасибо за перевод. Есть проблемка: не знаю, что вы брали за оригинал, но там расхождения с тем что на http://www.gtk.org/tutorial/, в т.ч. и в коде.
В тех исходниках, что в вашем тексте:
В радио-кнопках http://linfoline.homedns.org/gtk/x562.html в коде пропущен вызов init и понятно нифига не работает (в оригинал щас глянул - там это исправлено).
В разделе http://www.gtk.org/tutorial/x2202.html по виджетописанию код изменился. Ваш не собирается - там одна опечатка и одна видимо ошибка (не понял, что должно быть на самом деле). Но в оригинале код уже другой и немножко другие функции вызываются - GTypeInfo вместо GtkTypeInfo и вызов g_type_register_static вместо gtk_type_unique.
Щас опробую их сборку. =)
Опробовал. Исходники из оригинального текста собрались, работают.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
Код: Выделить всё
#include <stdio.h> int main(int argc, char* argv[]) { printf("Hello World!!!\n"); return 0; }
Код: Выделить всё
ed@edwards-desktop:~/Documents/Developing/tmp$ gcc ./main.c -o tmp ed@edwards-desktop:~/Documents/Developing/tmp$ ./tmp Hello World!!! ed@edwards-desktop:~/Documents/Developing/tmp$
Все скомпилировалось! Ура!

conio.h отвечал за функции clrscr() и getch(). Эти три элемента и вызывали сбой.
В какой библиотеке лежат clrscr() и getch()?
Дорогу осилит идущий
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
Наши поздравления. =)
В стандартной библиотеке борландс (С) 1987 Борланд =)))
Учите "классический си". В нем нет таких функций.
А когда они и вправду понадобятся, есть ncurses - там все это найдется, и даже консольно-оконный интерфейсик. =)
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 807
- ОС: ubuntu
Re: Изучение С
Перевод туториала уже действительно немного устарел так как был сделан 1.5 года назад, оригинал видимо начали немного исправлять хотя он тоже устаревший, библиотека очень динамично развивается поэтому сложно это всё синхронизировать.
В любом случае спасибо за замечания, в ближайшее время внесу соответсвующие изменения в документ.
-
- Сообщения: 436
- Статус: Интересующийся новичок
- ОС: Debian GNU/Linux 4 & 5
Re: Изучение С
Похоже, когда вы переводили, была еще старая версия (или часть глав в новой не были переработаны), вот здесь то же, что у вас - http://www.gtk.org/tutorial1.2/ И исходники, на которые у вас ссылка, от нее, тож старые.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
- Сообщения: 807
- ОС: ubuntu
Re: Изучение С
sergio писал(а): ↑23.09.2007 21:44Похоже, когда вы переводили, была еще старая версия (или часть глав в новой не были переработаны), вот здесь то же, что у вас - http://www.gtk.org/tutorial1.2/ И исходники, на которые у вас ссылка, от нее, тож старые.
Просто у команды GTK+ довольно странная схема по работе с документацией, то есть изменения вносятся без какого либо указания что они внесены.
Версия документа меняется только основная, то есть туториал видимо сменит свою версию когда выйдет библиотека под версией 3.0

-
- Сообщения: 702
- ОС: Gentoo
Re: Изучение С
sergeyvp,
большое спасибо за рекомендацию книги. Учебник, действительно, супер
большое спасибо за рекомендацию книги. Учебник, действительно, супер

Дорогу осилит идущий