Программы
Строки в Си

Строки в Си

Если во многих высокоуровневых языках строки – само собой разумеющееся, то в Си нужно строки знать и уметь ими пользоваться.

Самое время после массивов рассмотреть Си-строки, ведь они – всего лишь массив однобайтовых символов.

Ещё один пример "сахара" в Си. Удобный.

    char text[8] = "Hello C";

Зачем 8, а не 7 элементов мы выделили?

Всё потому что требуется ещё и символ \0 (нулевой байт) в конце строки – символ конца строки в Си-строках. Также можно было реализовать строки с зарезервированным первым байтом - счётчиком используемых символов. Однако, в Си / Unix решили использовать стоп-байт.

Пример программы strlen – подсчёт длины строки:

#include <stdio.h>

int main(void) {
    char *text = "Hello world";  // А вот и "сахар"!
    // Обратите внимание на двойные кавычки – это как раз определяет строку.
    // В то время как одинарные кавычки определяют одиночный символ.

    int i = 0;
    while (text[i++] != 0);  // Блок while нам не понадобится
    // - просто двигаемся вперёд, пока не увидим нулевой байт.

    printf("%d", i - 1);  // Один раз сделали "лишний" ++
    return 0;
}

В случае, если мы хотим вывести строку через printf, используем формат "%s":

    printf("%s\n", text);
    printf("%d\n", strlen(text));

Множество полезных функций аналогичных strlen определены в заголовочном файле string.h. Их описание можно найти в man string. Пример сравнения начальных символов двух строк:

#include <string.h>
#include <stdio.h>

int main(void) {
    // Получим на ввод строку
    char name[16];
    scanf("%s", name);

    // Сравним первые 5 символов
    if (strncmp(name, "Hello", 5) == 0) {
        printf("Hello!\n");
    } else {
        printf("Not equal.\n");
    }

    // Пример ещё одной функции из string.h
    char dest[10]="Hello";
    char src[]="World";

    // Складываем строки. Кладём в первую 3 символа второй.
    strncat(dest, src, 3);
    printf("%s\n", dest);

    return 0;
}

ДЗ

  • Написать вывод таблицы квадратов в псевдографике.

    Таблица

    • балл за реализацию на указателях
  • Написать функцию strncat.

Также может быть вам интересно:

Массивы

Массивы в Си – довольно интересная структура данных. Простая и эффективная как топор!

Читать »

Примеры решений ДЗ

Примеры решений домашних заданий за первые 3 пары

Читать »
Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Добавляем поддержку медиа-файлов в Django проект

Добавляем поддержку медиа-файлов в Django проект

Современные сайты редко ограничиваются только текстом и вёрсткой. Часто в заметках красуются фотографии, а рядом с описанием товаров - их изображения.

Фото Настройка журналирования (логирования) в Python с примерами

Настройка журналирования (логирования) в Python с примерами

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

Фото Шаблон разработки ПО — Model View Controller (MVC)

Шаблон разработки ПО — Model View Controller (MVC)

MVC - один из самых распространённых архитектурных шаблонов разработки. Часто используется в различных фреймворках. В том числе и в Django.

Фото Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если одни и те же данные нужны в разных местах, лучше сделать свой контекст-процессор.

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.

Фото Разграничение прав доступа на Django сайте

Разграничение прав доступа на Django сайте

Почти на любом веб-сайте необходимо разделять пользователей на группы и предоставлять им разные возможности. В Django есть довольно серьёзная система прав доступа для пользователей - давайте её рассмотрим!

Фото Пользователи и их создание в Django - своя регистрация на сайте

Пользователи и их создание в Django - своя регистрация на сайте

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