Символьные массивы в языке С. Работа со строками
Практическая часть
Пример 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.