Строки в языке Си

 

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

Нулевой байт – это байт, каждый бит которого равен нулю, при этом для нулевого байта определена символьная константа ´\0´ (признак окончания строки, или нуль-терминатор). Поэтому, если строка должна содержать k символов, то в описании массива необходимо указать k+1 элемент.

Например, char a[7]; - означает, что строка может содержать шесть символов, а последний байт отведен под нулевой.

Строковая константа – это набор символов, заключенных в двойные кавычки. Например:

сhar S[ ]=“Работа со строками”;

В конце строковой константы явно указывать символ ´\0´ не нужно.

При работе со строками удобно пользоваться указателями, например:

char *x;

x = "БГУИР";

x = (i>0)? "положительное":(i<0)? "отрицательное":"нулевое";

Напомним, что для ввода строк обычно используются две стандартные функции:

scanf() - вводит значения для строковых переменных спецификатором ввода %s до появления первого символа “пробел” (символ «&» перед ID строковых данных указывать не надо);

gets() - ввод строки с пробелами внутри этой строки завершается нажатием клавиши ENTER.

Обе функции автоматически ставят в конец строки нулевой байт.

Вывод строк производится функциями printf() или puts() до первого нулевого байта (‘\0’):

printf() не переводит курсор после вывода на начало новой строки;

puts() автоматически переводит курсор после вывода строковой информации в начало новой строки.

Например:

char Str[30];

printf(“ Введите строку без пробелов : \n”);

scanf(“%s”,Str);

или

puts(“ Введите строку ”);

gets(Str);

 

Остальные операции над строками выполняются с использованием стандартных библиотечных функций, описание прототипов которых находятся в файле string.h. Рассмотрим наиболее часто используемые функции.

Функция int strlen(char *S) возвращает длину строки (количество символов в строке), при этом завершающий нулевой байт не учитывается.

Пример:

char *S1=”Минск!\0”, S2[]=”БГУИР-Ура!”;

printf(“ %d, %d .”, strlen(S1), strlen(S2));

Результат выполнения данного участка программы:

6 , 10 .

Функция int strcpy(char *S1, char *S2) - копирует содержимое строки S2 в строку S1.

Функция strcat(char *S1, char *S2) - присоединяет строку S2 к строке S1 и помещает ее в массив, где находилась строка S1, при этом строка S2 не изменяется. Нулевой байт, который завершал строку S1, заменяется первым символом строки S2.

Функция int strcmp(char *S1, char *S2) сравнивает строки S1 и S2 и возвращает значение <0, если S1<S2; >0, если S1>S2; =0, если строки равны, т.е. содержат одно и то же число одинаковых символов.

Функции преобразования строки S в число:

- целое: int atoi(char *S);

- длинное целое: long atol(char *S);

- действительное: double atof(char *S);

при ошибке данные функции возвращают значение 0.

Функции преобразования числа V в строку S:

- целое: itoa(int V, char *S, int kod);

- длинное целое: ltoa(long V, char *S, int kod); 2£ kod £36, для отрицательных чисел kod=10.

 

Пример функции del_c(), в которой удаляется символ "с" из строки s каждый раз, когда он встречается.

void del_c( char s[ ], int c)

{ int i,j;

for( i=j=0; s[i] != '\0'; i++)

if( s[i]!=c) s[j++]=s[i];

s[j]='\0';

}

 








Дата добавления: 2015-09-11; просмотров: 2739;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.