Символьные массивы в языке С. Работа со строками
Практическая часть
Пример 1. Напишите программу определения длины заданных строк и их распечатки, а также определения размера строк в байтах.
Для решения поставленной задачи применим библиотечную функцию strlen() и оператор sizeof.
Программный код решения примера:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main (void) {
char str[] = {'A','B','C','D','\0'};
char str2[] = "hello, world\0";
printf("\n\t The lines are:\n\n\t ");
puts(str);
printf("\t "); // Для отступа от края дисплея
puts(str2);
printf("\n\t The length of the 1st line (%s) is: %i\n", str, strlen(str));
printf("\t The size of the memory of the 1st line (%s) is: %i\n", str, sizeof str);
printf("\n\t The length of 2-nd line (%s) is: %i\n", str2, strlen(str2));
printf("\t Memory size 2-nd line (%s) is: %i\n", str2, sizeof str2);
printf("\n Press any key: ");
_getch();
return 0;
}В программе функция strlen() возвращает длину строки, причем строка должна заканчиваться символом строки [6.2]. Символ конца строки не учитывается. Для работы с функцией strlen() необходимо подключить заголовок <string.h>. Оператор sizeof во время компиляции программы получает размер типа или значения. Для определения размера типа оператор используется со скобками, например, sizeof(char), а для определения размера конкретного значения оператор может использоваться без скобок.
В программе использована функция puts(), которая записывает строку, адресуемую, например, параметром str, в стандартное выходное устройство – дисплей. Символ конца строки преобразуется в разделитель строк.
Результат выполнения программы показан на рис. 6.1.
Задание 1
- В строке str2[] уберите символ завершения строки. Проанализируйте и объясните результат.
- Вместо функций puts() примените функции printf().
- Задайте явную инициализацию строк как одномерных массивов. Сравните результаты длины и размерности строк.
- При явной инициализации одномерных массивов в заданных строках не указывайте символы конца строки. Проанализируйте результат выполнения программы.
- Напишите программу циклического заполнения символьного массива, соответствующего фамилии пользователя (студента).
- Определите размерности типов: char, int, float, double, long int, long double, long long int. Выполните в цикле при использовании оператора типа переключатель.
Пример 2. Напишите программу копирования одной заданной строки в другую.
Для решения используем библиотечную функцию strcpy(), для которой подключим заголовок <string.h>.
Программный код решения примера:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main (void) {
char str1[] = "123456789";
char str2[] = "qwerty";
printf("\n\t The length of the line \"%s\" is: %d\n", str1, strlen(str1));
strcpy(str1, str2);
printf("\t After copying: ");
puts(str1);
printf("\n\t The length of the line \"%s\" is: %d\n", str1, strlen(str1));
printf("\n Press any key: ");
_getch();
return 0;
}Результат выполнения программы показан на рис. 6.2.

