Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функции работы со строками c






Давайте вначале посмотрим, что нам может дать наша библиотека stdio.h, которая содержит парочку функций работы со строками:

int getchar()

возвращает значение символа, введенного вами с клавиатуры. А вот и вывод этого числа:

printf(" %d", getchar());

char *gets (char *s)

функция просит вводить пользователя строку, которую она помещает в массив s, пока пользователь не нажмет 'Enter':

char str[7] = " ";

gets(str);

int putchar (int c)

печатает символ, который имеет код 'c':

putchar(97); //напечатает символ а

int puts (char *s)

печатает строку s и переводит курсор на новую строку:

char str[7] = " sergey";

puts(str);

int sprintf (char *s, char *format,...)

Выполняет тоже, что и функция printf, за тем исключением, что записывает данные в массив s:

char str[37] = " ";

sprintf (str, " chislo: %d, month: %s", 10, " desember");

//В массиве будет: chislo: 10, month: desember

int sscanf (char *s, char *format,...)

происходит ввод значений не с клавиатуры, а из массива s:

char str[37] = " sergey", s[100]=" ";

sscanf (str, " %s", s);

string.h

Теперь давайте рассмотрим очень мощную библиотеку для работы со строками c: string.h. Естественно, что для работы функций библиотеки string.h ее надо подключить к нашей программе.

Вот перечень функций:

char *strcpy (char *srt1, char str2)

Копирует строку str2 в строку str1, возвращаемым значением этой функции является новая, полученная строка str1

char str[37] = " sergey", s[100]=" monk";

strcpy(str, s);

char *strncpy (char *srt1, char str2, int n)

эта функция делает все тоже самое, что и предвидущая, за исключением того, что тут возможен контроль количества копируемых символов:

char str[37] = " sergey", s[100]=" monk";

strncpy(str, s, 3); //ответ: mongey

char *strcat (char *srt1, char str2)

Функция добавляет в строку str1 строку str2. Т.е. на место нуль-терминатора в строке str1, вставляется строка str2:

char str[37] = " sergey", s[100]=" monk";

strcat(str, s); //Ответ: sergeymonk

char *strncat (char *srt1, char str2, int n)

Добавляет к первой строке ровно n символов из второй строки

char str[37] = " sergey", s[100]=" monk";

strncat(str, s, 2); //ответ: sergeymo

Вот вы и посмотрели функции работы со строками c и библиотечный файл string.h. С ними все намного упрощается. Но прежде чем вы будете их использовать, надо выполнить домашнее задание.

Формат представления. В С отсутствуют встроенные строковые типы в том смысле, в котором они есть в языках типа Basic и Pascal. И присущая этим языкам легкость оперирования строковыми переменными (присвоение, сравнение) в С недоступна. Что же такое строка в С?

Для начала разберемся, что такое строка в жизни. Очевидно, что строка – это последовательность символов. В С – как в жизни. С-строка — это последовательность символов. Как известно, последовательности в С представляются массивами или указателями. Между первыми и вторыми существует связь, однако природа этой связи выходит за рамки данной статьи. Предполагается, что читателю знакомы следующие особенности связи между массивами и указателями:

массив можно привести к указателю на его первый элемент, что неявно происходит при передаче массивов в функции, ожидающие указатели

информация о размере массива переданного таким образом в функцию теряется

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



В дальнейшем для простоты я по большей части буду говорить о массивах, но почти все сказанное относится и к указателям.

Итак, тип строк в С – массив. Однако каков тип элементов этого массива? Вообще говоря, возможны варианты. Исторически символ занимает 1 байт, в этом случае он имеет тип char. При этом существуют и другие кодировки, в которых символ представляется, например, двумя байтами. Для работы с такими строками требуются специальные функции.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.