Опубликован: 14.12.2010 | Доступ: свободный | Студентов: 3125 / 712 | Оценка: 4.53 / 4.12 | Длительность: 26:28:00
Лекция 7:

Символьные массивы в языке С. Работа со строками

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >

Практическая часть

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

Определение длины и размерности строк

Рис. 6.1. Определение длины и размерности строк

Задание 1

  1. В строке str2[] уберите символ завершения строки. Проанализируйте и объясните результат.
  2. Вместо функций puts() примените функции printf().
  3. Задайте явную инициализацию строк как одномерных массивов. Сравните результаты длины и размерности строк.
  4. При явной инициализации одномерных массивов в заданных строках не указывайте символы конца строки. Проанализируйте результат выполнения программы.
  5. Напишите программу циклического заполнения символьного массива, соответствующего фамилии пользователя (студента).
  6. Определите размерности типов: 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.

Копирование строк

Рис. 6.2. Копирование строк
< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Мухаммадюсуф Курбонов
Мухаммадюсуф Курбонов