Строки

Строка – это одномерный массив символов, заканчивающийся нулевым символом.

В языке С признаком окончания строки служит символ '\0'. При объявлении массива символов, предназначенного для хранения строки, необходимо отвести одно место для нуля, т.е. для символа окончания строки '\0'. Например, если дана строка qwerty, в которой 6 символов, каждый из которых занимает в памяти 1 байт, то при инициализации такой строки необходимо отвести 1 байт для нулевого символа. Поэтому следует сделать объявление строки для семи символов:

char str[7] = "qwerty";

Альтернативным объявлением может служить безразмерная инициализация:

char str[ ] = "qwerty";

При этом в случае определения длины строки результатом будет число 6. Размер строки не изменится, если в ней указать символ окончания строки:

char str[ ] = "qwerty\0";

Для одномерных массивов общий размер массива в байтах вычисляется по формуле:

всего байт = размер типа в байтах *  количество элементов

Пример 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; }

Задание 1

Пример 2. Напишите программу копирования одной заданной строки в другую.

Для решения используйте библиотечную функцию strcpy(), для которой подключите заголовок <string.h>.