Студопедия

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

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

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






  • Функции работы со строками 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.