Студопедия

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

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

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






Тема 9. Строки






Строка это, по сути, массив символов. Вот пример:

char str[] = " Это просто строка";

Эту же строчку для большего понимания можно записать вот так:

char str[] = {'Э', 'т', 'о', ' ', 'п', 'р', 'о', 'с', 'т', 'о', '', 'с', 'т', 'р', 'о', 'к', 'а'};

Т.е. все тот же массив, только состоящий уже из символов. Поэтому работать с ним можно, так же как и с целочисленными массивами.

Вот пример и его решение: требуется перевести введенное слово в верхний регистр:

#include < conio.h>

#include < stdio.h>

int main()

{

char str[] = " hello";

for (int i=0; str[i]! = '\0'; i++){

str[i] -= 32;

}

for (int i=0; str[i]! = '\0'; i++){

printf (" %c", str[i]);

}

getch();

return 0;

}

для получения кода числа просто воспользуйтесь в функции printf спецификатором %d. Да, и еще один важный момент: окончанием любой строки является нуль-терминатор, который обозначается специальным символом - '\0'.

Еще одним способом указания строки является объявление ее через char*. Вот пример:

char *str = " provod";

Т.е. создается указатель на строку, который располагается где-то в памяти.

А вот как можно вводить строки через, нам уже родной, опертаор scanf:

char str[16]; scanf(" %s", str);

Тут две тонкости:

знак взятия адреса тут не нужен, так как имя массива и является адресом

Длина вводимой строки не должна превышать 15 символов, так как последним обязательно должен быть нуль-терминатор. Причем компилятор сам заполнит этот символ после последнего введенного вашего символа.

Так как язык Си является языком структурным, то существуют уже встроенные функции для работы со строками и с символами. Для обработки строк вам понадобится подключить файл: ctype.h. Файл содержит функции определения регистра, формата символов.

Иногда вам может понадобиться перевести строку в другой тип данных. Для перевода строк в другие типы существует библиотека stdlib. Вот ее функции:

int atoi (char *str)

long atol (char *str)

double atof (char *str)

Иногда эти функции очень помогают, например, когда надо извлечь из строки год или цифровое значение.

Функции работы со строками 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

Большинство функций работы со строками содержится в библиотеке string.h

 

Функция strlen (S1) возвращает длину строки S1, исключая нулевой символ.

 

char *strcpy (char *srt1, char str2)

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

char str[37] = " hello", s[100]="!!! ";

strcpy(str, s);

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

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

char str[37] = "!!! ", s[100]=" privet";

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

char *strcat (char *srt1, char str2)

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

char str[37] = " hello", s[100]="!!! ";

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

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

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

char str[37] = " hello", s[100]="!!! ";

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

 

Сравнение строк производится функцией strcmp в библиотеке string.h

int strcmp(const char *str1, const char *str2);

Функция strcmp() сравнивает в лексикографическом порядке две строки и возвращает целое значение, зависящее следующим образом от результата сравнения:

меньше нуля, если str1 меньше str2;

нуль, если str1 равен str2;

больше нуля, если str1 больше str2.

 

Эту функцию можно использовать для проверки пароля. В случае неверного значения она возвращает нуль, а при совпадении — единицу.

 

int password(void)

{

char s[80];

 

printf(“Введите пароль: ”);

gets(s);

 

if(strcmp(s, “pass”)) {

printf(“Неверный пароль\n”);

return 0;

}

return 1;

}






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