Хелпикс

Главная

Контакты

Случайная статья





Знак равенства перед строковым литералом означает инициализацию, а не присваивание!!!



Строки

Строка представляет собой массив символов, заканчивающийся нуль-символом. Под нуль-символом понимается символ с кодом, равным 0, что записывается в виде управляющей последовательности '\0'. По его положению определяется фактическая длина строки.

Строки не обязательно должны состоять из символов типа char (это позволяет использовать любой набор символов, а не только ASCII).

Строку можно инициализировать строковым литералом.

Пример 11. Инициализация строки. char str[10] = "Vasia"; // выделено 10 элементов с номерами от 0 до 9 // первые элементы - 'V','а','s','i','а','\0'

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

char str[] = "Vasia"; // выделено и заполнено 6 байт

Оператор "char *str = "Vasia"" создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно. Например, оператор str[1]='o' не допускается.

Знак равенства перед строковым литералом означает инициализацию, а не присваивание!!!

Операции со строками

Операция присваивания одной строки другой не определена и может выполняться с помощью цикла или функций стандартной библиотеки поскольку строка является массивом.

Для копирования, сравнения, объединения строк, поиска подстроки, определения длины строки и т. д., а также ввода строк и отдельных символов с клавиатуры и из файла можно использовать библиотеки <string.h> (<сstring.h>)

Пример 12. Работа со строками. // Программа запрашивает пароль не более трех раз. #include <stdio.h> #include <string.h> int main(){ char s[80], passw[] = "kuku"; // passw - эталонный пароль. // Можно описать как *passw = "kuku"; int i, k = 0; for (i=0; !k && i<3; i++){ printf("\nвведите пароль:\n"); gets(s); // функция ввода строки if (strstr(s,passw)) k = 1; // функция сравнения строк } if (k) printf("\nпароль принят"); else printf("\nпароль не принят"); return 0; }


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.