Как искать исходники на pure C
Модератор: Модераторы разделов
Как искать исходники на pure C
Очень часто читаю, что С имеет огромное колличество уже готового кода. Чтобы я не пытался найти в google я не нахожу практически ничего. Есть ли какой то ресурс где просто исходники С программ (функций), чтобы просто брать их и использовать?
Например, мне нужен ping локальной сети и интернет ресурсов. В соотвествии есть пинг или нет - делаю разные события. В паскале я нашел библиотеку и подключил ее, в С я нашел пару примеров на форумах не рабочих. Весь код мне выдает в основном под С++.
Или другой пример, надо забрать из локальной сети каталог с файлами и скопировать к себе. Как искать такой код на С?
Или я чего то не понимаю?
Например, мне нужен ping локальной сети и интернет ресурсов. В соотвествии есть пинг или нет - делаю разные события. В паскале я нашел библиотеку и подключил ее, в С я нашел пару примеров на форумах не рабочих. Весь код мне выдает в основном под С++.
Или другой пример, надо забрать из локальной сети каталог с файлами и скопировать к себе. Как искать такой код на С?
Или я чего то не понимаю?
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Ну вот забил я в поисковик «c ping library» и первым результатом получил octo's ping library. Есть, правда, нюанс, связанный с тем, что для отправки ICMP-запросов требуется повышение привилегий. Поэтому наиболее простой и безопасный вариант будет примерно таким:
Если же интересует внутренняя реализация, то код на самом что ни на есть C тут: https://sourceforge.net/p/iputils/code/ci/HEAD/tree/
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
int ping(char* host, unsigned int count)
{
char cmd[1024];
int i = snprintf(cmd, sizeof(cmd), "ping -q -c %u '%s'", count, host);
if (i >= sizeof(cmd)) {
return -2;
}
return system(cmd);
}
Если же интересует внутренняя реализация, то код на самом что ни на есть C тут: https://sourceforge.net/p/iputils/code/ci/HEAD/tree/
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Для начала сформулируйте задачу так, чтобы её мог понять другой человек.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Как искать исходники на pure C
Начинайте с указания операционной системы, для которой собираетесь "писать".
Это Windows?
Re: Как искать исходники на pure C
я верно понимаю, что советы:
1. надо писать более точные запросы.
2. надо анализировать чужой код, искать который надо на сервисах гитхаб и соундфорце?
---
также мне не понятно, кода на С++ действительно больше, чем на С или мне так просто кажется?
---
или задам вопрос иначе, как изучать С, чтобы начать писать на нем реальные программы? Ну хоть одну написать.
зы
ping я не один запустить не смог.
1. надо писать более точные запросы.
2. надо анализировать чужой код, искать который надо на сервисах гитхаб и соундфорце?
---
также мне не понятно, кода на С++ действительно больше, чем на С или мне так просто кажется?
---
или задам вопрос иначе, как изучать С, чтобы начать писать на нем реальные программы? Ну хоть одну написать.
зы
ping я не один запустить не смог.
Re: Как искать исходники на pure C
Больше чего?
На C++ по сравнению с C, во многих случаях, больше только гемороя и головной боли.
Так изучить?
С этого и нужно было начинать...
Это потому что руки ... мыть их нужно перед тем как "писать".
Re: Как искать исходники на pure C
Больше чего?
больше исходников на С++, чем исходников на С. По поиску из google кажется так.
Так изучить?
С этого и нужно было начинать...
вы не ответили, как это сделать?
Я сейчас умею на lazarus (аналог делфи) писать программы. То есть ставлю задачу, разбиваю ее на подзадачи, ищу решение подзадач в интернете или пишу сам, добиваюсь, чтобы программа в целом заработала.
а вот с С беда целая. Не могу понять как на нем для подзадач искать что то. По моему некомпетентному мнению язык С настолько скуден, что сделать нельзя вообще ничего. На всё нужны функции, которых я искать не умею.
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Если у Вас недостаточно опыта, чтобы оценить качество кода, это не лучший подход. Искать же лучше начинать с репозиториев своего дистрибутива, в метаданных пакетов всегда есть ссылки на официальные сайты.
Ну и просто анализ кода редко бывает продуктивным. Разобраться в нём можно намного лучше, если поставить себе задачу исправить какой-нибудь баг или добавить новую функциональность.
Берётся хорошая книжка, вдумчиво читается с выполнением учебных заданий. Где-то на середине или чуть раньше берётся реальная несложная (то есть не выходящая за пределы возможностей стандартной библиотеки) задача и реализуется параллельно с дочитыванием книжки. Если некоторое время спустя Вам становится ясно, что в программе Вы всё сделали не так, как следовало, значит обучение начало давать результаты.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Как искать исходники на pure C
Где-то на середине или чуть раньше берётся реальная несложная (то есть не выходящая за пределы возможностей стандартной библиотеки) задача и реализуется параллельно с дочитыванием книжки
1. можно пример несложной задачи?
2. не могу понять, вроде как самый смысл решать именно полезные задачи, а они требуют сторонние функции.
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Не думаю. Больше примеров — вполне вероятно, просто потому что в C++ намного больше сущностей, которые этими самыми примерами иллюстрируются. Больше вопросов по нему — потому что язык более сложный.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Ну например Ваша же задача: Решено: обработка большого текстового файла. Сначала сделайте тупой прямой поиск аналогично варианту с grep, а когда выжмете из него всё, что можно, начинайте осваивать сторонние библиотеки для индексации типа xapian.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Как искать исходники на pure C
azsx писал(а): ↑17.06.2016 11:45Так изучить?
С этого и нужно было начинать...
вы не ответили, как это сделать?
Я сейчас умею на lazarus (аналог делфи) писать программы. То есть ставлю задачу, разбиваю ее на подзадачи, ищу решение подзадач в интернете или пишу сам, добиваюсь, чтобы программа в целом заработала.
Как сделать?
Ну, первое с чего нужно начать, это забыть как страшный сон lazarus, делфи и прочее...
Начать с чистого листа ... на C.
А как по моему в меру компетентному мнению - высказанное некомпетентное мнение "насколько скудно", что его даже и обсуждать всерьёз не престало...
Re: Как искать исходники на pure C
язык C в Linux: вопросы начального уровня
У. Ричард Стивенс, Стивен Раго
UNIX. Профессиональное программирование, 3-е издание
ISBN: 978-5-93286-216-2
1104 страницы
декабрь 2013
Символ-Плюс
Источник: http://www.books.ru/books/unix-professiona...rovanie-503720/ © Books.ru
Как только вы дойдёте до 1104-й страницы - оно сразу попустит
Re: Как искать исходники на pure C
Bizdelnick писал(а): ↑17.06.2016 12:01
Не думаю. Больше примеров — вполне вероятно, просто потому что в C++ намного больше сущностей, которые этими самыми примерами иллюстрируются.
Больше (возможно) примеров потому, что:
- язык C++ основной (по сравнению с C) в Windows, в VisualStudio ... да и CodeBlocks - виндауны преимущественно используют C++ (на C для Windows делать нечего), вот примеры для виндаунов и от виндаунов и размещаются ... ну а имя им (виндаунам) - легион, как известно
- в ВУЗах (даже если их университетами называть) обучают преимущественно C++ и почти не обучают C ... это связано с тем, что ВУЗовские преподаватели сами C не знают - они сами учились по книгам, а не по практике ... вот все их задания, лабораторные, курсовые и др. - исключительно на C++
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Как искать исходники на pure C
Для C/C++ нет пакетного менеджера и единого репозитория.
Ну и потом - есть https://github.com/.
Вообще, забавно насколько в 2016 люди стали избалованы всякими bower/gem/npm/pip и опенсурсом... Одним из требований к языку и платформе становится "чтобы просто брать их и использовать?" =)
Re: Как искать исходники на pure C
Вообще, забавно насколько в 2016 люди стали избалованы всякими bower/gem/npm/pip и опенсурсом... Одним из требований к языку и платформе становится "чтобы просто брать их и использовать?" =)
немного не так, я просто не понимаю почему нет единого репозитория исходного кода со стандартными алгоритмами на С. Это очень удобно. При этом везде пишут, что под С очень много готовых библиотек, но я не понимаю как их искать!
---
Например, вчера я написал программу на лазарус. Суть, есть сайт на хтмл. На каждую хтмл страницу надо поставить <?php $id = '1'; ?> число растет по иттерации. Первым прогоном программа определяет максимальный id уже имеющийся на странице, вторым прогоном записывает на страницах где номера нет, строку на пхп. Есть маски по файлам и каталогам, которые обрабатывать не надо.
На лазарус я это написал за 1,5 часа между другими делами. У меня основная часть процедур, сложная по логике или объемная уже давно скопирована с интернета или я их могу найти и скачать. Мне остается написать только малую часть алгоритма под себя.
Допустим, я хочу написать программу на С. Первая часть моего алгоритма, мне надо считать в массив полные имена всех файлов с каталога, в том числе с вложенных каталогов. Как найти такую функцию на С? Если надо каждый велосипед переписывать самостоятельно, то как научится С чтобы начать писать такую функцию?
---
Olej за ссылки спасибо.
Re: Как искать исходники на pure C
Это называется POSIX, стандарт IEEE и Open Group Base Specifications : POSIX
А не надо никаких велосипедов, всё давно написано (потому даже примеров кода не нужно, что давно):
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Дело в том, что C намного старше, чем большая часть современных областей его применения. Старше TCP/IP и широкого распространения сетей. Старше стандарта POSIX, всех ныне живущих не-unix ОС и всех ныне живущих клонов unix, всех актуальных на данный момент файловых систем, всех имеющих сейчас хождение форматов данных кроме plain text. По мере необходимости каждый пилил для себя свои велосипеды, пока сетей не было. Когда они появились — стали обмениваться исходниками по электронной почте (а когда появилось величайшее детище Ларри Уолла, которое вовсе не perl, а маленькая программка patch — можно стало наладить и совместную разработку). Когда возник веб — стали выкладывать что-то на сайтах. Централизовать и упорядочить всё это задним числом в принципе невозможно (хотя попытки были). Так что библиотек множество, но удобного средства для их поиска нет.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Действительно, разве это пример? Там же всё совершенно очевидно. Добавить костылик для переносимости на системы без d_type в dirent да разыменование симлинков, и готово.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Как искать исходники на pure C
Ну это уже несколько преувеличение, для красного словца: язык C создавался изначально только с единствееной целью - писать операционные системы UNIX. И код всех последующих клонов UNIX заимствует, заимствует и заимствует непосредственно код из всех предшествующих реализаций, начиная от BSD.
Это как: садится Гендель за рояль ... и играет Моцарта. Садится Линус Торвальдс за клавиатуру ... и играет MINIX Таненбаума
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Ну так C старше и BSD (и, что вполне логично, вообще всех версий Unix, написанных на C).
Впрочем, это я погорячился. Там чуть ниже есть куда более простое решение с nftw().
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
azsx писал(а): ↑18.06.2016 02:27есть сайт на хтмл. На каждую хтмл страницу надо поставить <?php $id = '1'; ?> число растет по иттерации. Первым прогоном программа определяет максимальный id уже имеющийся на странице, вторым прогоном записывает на страницах где номера нет, строку на пхп. Есть маски по файлам и каталогам, которые обрабатывать не надо.
Вообще это задача ни разу не для C (и не для lazarus). Полностью корректное её решение потребовало бы реализовать парсер PHP-кода, но за полтора часа Вы бы этого точно не сделали. Значит Вам требовалось решение, худо-бедно применимое к данному конкретному набору файлов и могущее вести себя неправильно, если переменная определена корректно с точки зрения синтаксиса PHP, но чуть не так, как в Вашем примере. То есть решение разовое. Стоило ли ради этого убивать целых полтора часа, когда на шелле или перле задача решается от силы за 10 минут?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Как искать исходники на pure C
Централизовать и упорядочить всё это задним числом в принципе невозможно (хотя попытки были). Так что библиотек множество, но удобного средства для их поиска нет.
это очень плохо и странно. Но, зато, теперь всё ясно.
Действительно, разве это пример?
вот этот пример. Вот как вы его нашли? Вы сразу ищете в stackoverflow и github или как то по особому запрос в гугле набираете? Это уже готовый пример, ошибки (например с переносимостью) уже можно решать по ходу запуска. Как бы костяк алгоритма нужен.
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Вбил запрос "recursive directory search c" или как-то так. Может это был и не первый результат, но на первой странице точно.
я выше уже написал, что вариант с nftw(), приведённый там же, намного проще и лучше. Я сам раньше про ftw/nftw не знал.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Как искать исходники на pure C
Значит Вам требовалось решение, худо-бедно применимое к данному конкретному набору файлов и могущее вести себя неправильно, если переменная определена корректно с точки зрения синтаксиса PHP, но чуть не так, как в Вашем примере. То есть решение разовое. Стоило ли ради этого убивать целых полтора часа, когда на шелле или перле задача решается от силы за 10 минут?
скажем так прямо про полтора часа я немного соврал. Ушло реально полтора часа, но во время этого я еще готовил себе обед, например. На форумах сидел. Также я три раза глупо ошибался и восстанавливал сайт с архива. Так как программа простая я обрабатывал сразу на весь сайт.
Парсер php я не писал, мне надо было решение задачи для меня. Я буду этим пользоваться. Я использую хтмл, предпубликация, то есть я знаю где и в каком виде будет строка на php. Если ее нет, или она иная - просто напишется еще одна в начало файла, боляя поздняя строка будет иметь приоритет по значению. По логике ошибок быть не должно. Но на самом деле ошибки там не критичны.
Почему эта задача не для лазарус я не понимаю. perl я не знаю совсем (и учить не буду). Мне хочется писать такие программы на С, но сперва надо разобраться как искать в сети простые, сто раз уже кем то написанные алгоритмы.
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как искать исходники на pure C
Потому что Вы потратили ну пусть полчаса своего времени сверх того, что требовалось для написания shell-скрипта, делающего то же самое. Возможно, в результате сэкономили сотню-другую миллисекунд машинного времени на собственно обработку, и столько же будете экономить при следующих запусках. Стоит ли оно того?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Как искать исходники на pure C
Возможно, в результате сэкономили сотню-другую миллисекунд машинного времени на собственно обработку, и столько же будете экономить при следующих запусках. Стоит ли оно того?
ясно. Нет милисекунды того не стоят. Но: 1. врядли на bash я такую логику написал бы за полчаса; 2. у меня как бы комбайн под задачу. Плюс, что все нужные мне процедуры уже давно скопированы в тело программы и работают. Минус, что есть процедуры (в том числе и мои) которые не используются.
Я, наверное, в виду своей малограмотности не особо понимаю зачем под каждую задачу учить новый язык. Большая часть языков равнозначна для меня. Соотвественно можно взять один (два в реальности) и писать всё на них.