LinuxForum.Fans
Тема

Исходники на C

Автор: gnomsi 17 сообщений 5100 просмотров
#139125

Учусь программировать на си, следую правилу "пиши свой код, но при этом смотри чужой".
В итоге понадобился сайт где есть исходники по си, может кто нибудь знает,скинь пожалуйста.

#139126

начни с олдскульных книг для начала. а так бери программы из GNU.

#139227
gnomsi написал:
В итоге понадобился сайт где есть исходники по си, может кто нибудь знает,скинь пожалуйста.

http://www.slackware.com/
исходники в дистрибутиве, в каталоге source/
они даже собираются, я пробовал :)
удачи.

#139228

мда народ не знает о существовании SourceForge.net, любого дистра линукса

#139242

лучше начать писать какой нибудь проект (небольшой), а уж потом начать читать чужие исходники. это конечно же ИМХО, я лично так поступал.

#139301

Хотите реальное задание?

У меня имеется потребность написать прогу для обработки кое-каких экспериментальных данных. Прога простая. Мне ее писать не интересно и даже лень. Но прога нужна.
Точнее надо написать несколько таких прог. Они настолько простые, что проще обработку сделать в ручную, или написать пару строк на Питоне. Но мне хотелось бы иметь бинарники.

Прога №1
Имеется текстовые файлы, состоящие из четырех колонок цифр. Файле имеет длину от нескольких сот байт до 100 килобайт. Все файлы находятся в одно директории. Необходимо в каждый файл вставить строку -- его имя -- в самое его начало. Проще показать:

имя исходного файла uv-2011.03.11-00:00.bin.by-hour
содержимое исходного файла:

text

7 12 19 9
7 6 14 7
10 11 13 9
32 13 9 17
9 12 10 6
...

имя целеавого файла тоже самое,
содержимое целевого файла:

text

# uv-2011.03.11-00:00.bin.by-hour
7 12 19 9
7 6 14 7
10 11 13 9
32 13 9 17
9 12 10 6
...

Нужно учесть, что в командной строке при вызове проги, нужно указать наименование файла, который нужно обработать. Если нужно обработать несколько файлов, тогда нужно указывать шаблон.
Остальные требования я скажу по ходу работы.

Ну т.е. задача чисто учебная. Я думаю, каждый решит сам, кто он будет в этой задаче -- ученик или студент.

Ну что, поехали?

(Если это (обучение с практическим моментом) у нас заработает, озвучу другие задачи.)

#139326
zhevak написал:
Имеется текстовые файлы, состоящие из четырех колонок цифр. Файле имеет длину от нескольких сот байт до 100 килобайт. Все файлы находятся в одно директории. Необходимо в каждый файл вставить строку -- его имя -- в самое его начало. Проще показать:

я не понимаю - это одна примитивная команда sed. зачем вам бинарник?! (кстати, sed умеет делать бинарники. т.е. sed-программу можно оформить не только как скрипт, но и как бинарник. Это нужно для безопасности - дело в том, что тому, кто запускает скрипт нельзя запретить его читать, а бинарник - можно. И враг не поймёт, где у нас дыра).

zhevak написал:
длину от нескольких сот байт до 100 килобайт

с такой мелочью смысл? или их тысячи?

#139329

zhevak, кстати, как я понял, у вас есть куча данных, и вам надо их как-то обработать? решение:
1) вставляете в каждый файл в первую строчку

text
#!/usr/bin/command

2) даёте каждому файлу право исполняться
3) исполняете.

#139395

to DrBatty:

Ну, Билли! Ну ты даешь! (с) какой-то Вестерн.
Док, позвольте задать Вам вопрос -- Вы ощущаете, что задача не Вашего уровня?


Я еще раз обращаюсь к ТС: Вы можете решить эту задачу на Си? Какие у Вас возникают затруднения?

#139829
drBatty написал:

я не понимаю - это одна примитивная команда sed. зачем вам бинарник?!...

ТС интересует язык С, если бы его интересовал sed, он бы не постеснялся спросить об этом :)

#139876
zhevak написал:
Ну, Билли! Ну ты даешь! (с) какой-то Вестерн.
Док, позвольте задать Вам вопрос -- Вы ощущаете, что задача не Вашего уровня?

1) создать временный файл man fopen
2) записать туда строчку man fwrite
3) прочитать source и записать в target кусками по 1024 байт - man fread
4) убить source - man unlink
5) переименовать target в source - man 2 rename
6) ????????
7) PROFIT

andaks, sed доступна в исходниках, и её исходники написаны на Си. Причём там довольно всё просто, ибо большинство "матана" (вроде регулярок) на самом деле лежат в glibc. Мало того, sed - одна из самых Ъ утилит, и одна из самых древних (при этом она ещё и живая - выходят новые версии, появляются новые фичи, многие фичи ещё не доделаны, и пока в релизе закомментированы). Я её не просто так посоветовал - изучая какой-нибудь не Ъ отстой, ТС может нахвататься быдлокодерских привычек.

#139879

bobr, вы правы. только кроме исходников, я-бы и саму Gentoo поставил, ИМХО собирать генту внутри чего-то другого - слишком сложно.
Ещё подойдёт слакварь, ибо там по умолчанию не только исходники, но и все необходимые инструменты для работы с ними (не только сборка. их ещё хранить, просматривать, и редактировать вообще-то надо).

#139884
drBatty написал:
собирать генту внутри чего-то другого - слишком сложно.

Необязательно собирать генту. Это просто исходники, причем ничем не патченные, все генту-специфичные патчи там же, в отдельных файлах. ТС просил исходники - вот ему исходники, гигабайты и гигабайты исходников (-:

#139892
bobr написал:
ТС просил исходники - вот ему исходники, гигабайты и гигабайты исходников (-:

не самый лучший совет. вы наверное это сами понимаете. ведь исходники не просто так нужны.

вот ещё около 50000 исходников (правда там в основном С++) : https://developer.mozilla.org/en/Publishing_Mercurial_Clones

вы можете:
1) просматривать исходные тексты. причём не только текущую версию, но и любую другую
2) просматривать, кто, когда, и зачем вносил изменения
3) самостоятельно менять код как угодно
4) вносить свои изменения в проект (ага, вы можете сами помочь в написании FireFox'а)

#145921

Может вас заинтересует вот это: http://cirishen.blogspot.com/.
Задачи совсем простые как раз для начинающего.

Войдите или зарегистрируйтесь, чтобы ответить.