Skip to the content.

23 сентября 2021

Строки

Строки в Си являются являются массивами элементов char:

char s1[] = {'H', 'e', 'l', 'l', 'o', '\0'};
char s2[] = "Hello";

Объекты s1 и s2 представлены в памяти одинаково. Любой из них можно передать в функцию printf с параметром %f:

printf("%s\n%s\n", s1, s2);

Каждая строка в Си заканчивается символом \0. Поэтому для строки Hello будет выделена память для хранения шести char:

size_t s2len = sizeof(s2) / sizeof(char));
// s2len = 6

Если бы мы не добавили \0 в конец массива s1, то функция printf не могла бы верно определить конец строки.

Считывание строки из консоли:

printf("What is your name?\n");
char s3[15];
scanf("%s", s3);
printf("Hello, %s\n", s3);

Чтобы функция scanf не записала слишком много символов в строку, можно ограничить количество считываемых символов:

scanf("%15s", s3);

Эта команда запишет не более 15 символов в переменную s3.

Упражнение 1. Написать функцию, которая принимает строку и символ и определяет содержится ли символ в строке.

Упражнение 2. Написать функцию, которая принимает строку и определяет является ли она палиндромом. Строка содержит только строчные латинские символы.