Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В языках Си/Си++ нет специально определенного строкового типа данных, как в Турбо Паскале. Символьные строки организуются как массивы символов, последним из которых является символ \0, внутренний код которого равен нулю. Отсюда следует одно важное преимущество перед строками в Турбо Паскале, где размер строки не может превышать 255 (длина указывается в первом байте), — на длину символьного массива в Си нет ограничения.
Строка описывается как символьный массив. Например:
char STR[20];
Одновременно с описанием строка может инициализироваться. Возможны два способа инициализации строки — с помощью строковой константы и в виде списка символов:
сhаr 3[10] "строка";
сhаr 3[ ]="строка";
сhаr 3[10]={'с','т','р','о','к','а','\0'};
По результату первого описания под строку S будет выделено 10 байт памяти, из них первые 7 получат значения при инициализации (седьмой — нулевой символ). Второе описание сформирует строку из семи символов. Третье описание по результату равнозначно первому. Конечно, можно определить символьный массив и так:
сhаr S{.10]={'с','т','р','о', 'к','а'];
т. е. без нулевого символа в конце. Но это приведет к проблемам с обработкой такой строки, так как будет отсутствовать ориентир на его окончание.
Отдельные символы строки идентифицируются индексированными именами. Например, в описанной выше строке S [ 0 ] = ' с ', S[5]='а'.
Обработка строк обычно связана с перебором всех символов от начала до конца. Признаком конца такого перебора является обнаружение нулевого символа. В следующей программе производятся последовательная замена всех символов строки на звездочки и подсчет длины строки.
Пример 16:
//Замена символов на звездочки
#include <stdio.h>
#include <conio.h>
void main ()
{ char S[ ]="fh5j";
int i=0;
clrscr();
puts (S);
while(S[i])
{S[i++]='*'; puts(S);}
printf ("\n, Длина строки=",i);
}
В результате выполнения программы на экране получим:
fh5j
*h5j
**5j
* * * j
****
Длина строки=4
В этой программе цикл повторяет свое выполнение, пока S [1] не получит значение нулевого символа.
Для вывода строки на экран в стандартной библиотеке stdio имеется функция puts (). Аргументом этой функции указывается имя строки. В этой же библиотеке есть функция ввода строки с клавиатуры с именем gets (). В качестве аргумента указывается имя строки, в которую производится ввод.
Среди стандартных библиотек Си/Си++ существует библиотека функций для обработки строк. Ее заголовочный файл — string.h. В следующем примере используется функция определения длины строки из этой библиотеки. Имя функции — strlen (). В качестве аргумента указывается имя строки (приложение Б).
Дата публикования: 2014-11-02; Прочитано: 496 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!