Создание сайта, дизайн, web дизайн
Главная Работы Услуги Цены Контакты

 Главная
 Работы
 Услуги
 Цены
 Контакты
 

Введение

Мы уже говорили о том, что в языке C нет специального строкового типа данных. Для использования строк в языке С применяют символьные массивы. Я напоминаю, что в языке С строка должна заканчиваться нулевым байтом '\0' (нуль-терминатор). В этой статье рассмотрим стандартные библиотечные функции по обработке строк и примеры обработки строк.

Обзор функций

Стандартная библиотека С/C++ включает функции обработки строк. Для использования этих функций вы должны включить в свою программу файл "string.h". В этом файле даны объявления (прототипы) всех функций по обработке строк, а так же функций по работе с памятью. Здесь мы рассмотрим наиболее часто используемые функции для работы со строками. Более подробную информацию о всех функциях вы можете получить в любом справочнике.

Начнем с самой простой функции - strlen(). Ее вызов имеет вид

strlen(s);

Эта функция возвращает длину строки (количество символов) s не считая нулевого байта.

Следующая функция - strcpy(). Ее вызов имеет вид

strcpy(s1, s2);

Эта функция копирует содержимое строки s2 в строку s1. Массив s1 должен быть достаточного размера, чтобы в нем поместилась строка s2. Если размер массива s1 меньше чем это необходимо, то может произойти порча данных. При этом компилятор не выдает сообщение об ошибке. Отсюда следует, что нужно следить за размерами массивов. Функция strcpy() автоматически ставит нулевой байт в конец результирующей строки.

Еще одна часто используемая функция - strcat(). Вызов этой функции следующий

strcat(s1, s2);

Эта Функция присоединяет строку s2 к строке s1 и помещает результат в массив s1. Нулевой байт, который завершал строку s1, будет заменен на первый символ строки s2. Функция автоматически ставит нулевой байт в конец результирующей строки s1.

Далее рассмотрим функцию strcmp(). Ее вызов имеет вид

strcmp(s1, s2);

Функция strcmp() возвращает 0, если строка s1 равна строке s2. Строки равны если эти строки содержат одно и то же число одинаковых символов. Сначала функция сравнивает первые символы строк, потом если они равны она сравнивает вторые символы и т.д. Сравнение символов надо понимать как сравнение кодов символов. Если длина строки s1 больше длины строки s2, то функция strcmp() возвращает положительное значение, а если длина строки s1 меньше чем длина строки s2, то функция strcmp() возвращает отрицательное значение.

Так как раньше мы подробно не рассматривали функцию gets(), мы рассмотрим ее здесь. Вызов функции gets() имеет вид

gets(s);

Функция gets() предназначена для ввода строки символов. В отличие от функции scanf(), эта функция может полностью вводить строку содержащую пробелы. Параметром s может быть имя символьного массива. Необходимо следить за размером массива. Функция не проверяет поместилась ли ваша строка в указанный массив или нет. В случае успеха функция возвращает указатель на введенную строку.

Работа со строками

Напишем пример программы, которая сравнивает строки. Вводить строку мы будем с помощью функции scanf(). Эта функция вводит строку до первого пробела. Следите за регистром.

#include <stdio.h>

#include <string.h>

void main(void)

{

char str[50]; // массив под строку

printf("\nВведите вашу строку:");

scanf("%s", str);

if(!strcmp(str, "Hello")) printf("\nСтроки равны");

else

printf("Строки не равны!");

}

Теперь напишем программу определяющую длину вводимой строки. Длину строки будем определять с помощью функции strlen(). Эта функция возвращает длину строки не считая нулевого байта. В этом примере будем вводить строку с помощью функции gets(). В отличие от scanf(), эта функция может вводить строку с пробелами.

#include <stdio.h>

#include <string.h>

void main(void)

{

char str[100]; // массив под строку

int len;

printf("\nВведите вашу строку:");

gets(str);

printf("Вы ввели: %s\n", str);

// вычисляем длину строки

len=strlen(str);

printf("Длина этой строки: %d\n", len);

}

Следующая программа покажет как можно использовать функции strcpy() и strcat().

#include <stdio.h>

#include <string.h>

void main(void)

{

char s1[40];

char s2[20];

// Заполняем строку s1

strcpy(s1, "Привет ");

// Заполняем строку s2

strcpy(s2, "Мир!");

// Присоединяем строку s2 к строке s1

strcat(s1, s2);

// вывод результирующей строки

puts(s1);

}

Программа выведет на экран строку:

Привет Мир!




Бардин П.Б. http://proger.ru/
Состояние воздуха:
Мониторинг загрязнения атмосферы в режиме реального времени
© 2004-2017 LABDESIGN.RU   e-mail: