
- Главная
- Каталог
- Интернет технологии
- С/С++ Portal | Программирование
С/С++ Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для C/C++-разработчика
Статистика канала
ls, get, put, quit
Разберёшься, как сокеты передают файлы по сети.
https://github.com/dexter-xD/project-box/tree/main/ftp
// build: cc kv.c -lsqlite3 -o kv
// usage: ./kv set <key> <value> | get | del
#include <stdio.h>
#include <string.h>
#include <sqlite3.h>
static int die(sqlite3 *db, const char *what) {
fprintf(stderr, "%s: %s\n", what, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
int main(int argc, char **argv) {
if (argc < 3) {
fputs("usage: kv set <k> <v> | kv get <k> | kv del <k>\n", stderr);
return 1;
}
sqlite3 *db;
if (sqlite3_open("kv.db", &db) != SQLITE_OK) return die(db, "open");
if (sqlite3_exec(db,
"CREATE TABLE IF NOT EXISTS kv(k TEXT PRIMARY KEY, v TEXT);",
0, 0, 0) != SQLITE_OK) return die(db, "create");
sqlite3_stmt *st = NULL;
int rc = 0;
if (!strcmp(argv[1], "set") && argc == 4) {
if (sqlite3_prepare_v2(db,
"INSERT OR REPLACE INTO kv VALUES(?,?);", -1, &st, 0) != SQLITE_OK)
return die(db, "prepare");
sqlite3_bind_text(st, 1, argv[2], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(st, 2, argv[3], -1, SQLITE_TRANSIENT);
if (sqlite3_step(st) != SQLITE_DONE) rc = die(db, "set");
} else if (!strcmp(argv[1], "get") && argc == 3) {
if (sqlite3_prepare_v2(db,
"SELECT v FROM kv WHERE k=?;", -1, &st, 0) != SQLITE_OK)
return die(db, "prepare");
sqlite3_bind_text(st, 1, argv[2], -1, SQLITE_TRANSIENT);
int step = sqlite3_step(st);
if (step == SQLITE_ROW)
printf("%s\n", sqlite3_column_text(st, 0));
else if (step == SQLITE_DONE) {
fputs("not found\n", stderr);
rc = 1;
} else {
rc = die(db, "get");
}
} else if (!strcmp(argv[1], "del") && argc == 3) {
if (sqlite3_prepare_v2(db,
"DELETE FROM kv WHERE k=?;", -1, &st, 0) != SQLITE_OK)
return die(db, "prepare");
sqlite3_bind_text(st, 1, argv[2], -1, SQLITE_TRANSIENT);
if (sqlite3_step(st) != SQLITE_DONE) rc = die(db, "del");
} else {
fputs("unknown command\n", stderr);
rc = 1;
}
sqlite3_finalize(st);
sqlite3_close(db);
return rc;
}{}
Отзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
С/С++ Portal | Программирование — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 15.6K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 13.3, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 6293.7 ₽, а за 29 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий