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. Написать функцию, которая принимает строку и определяет является ли она палиндромом. Строка содержит только строчные латинские символы.