Строки в С обрабатываются как массивы элементов типа char. Функции для работы со строками можно найти в модуле string.h.
“\0”, - символ конца строки; его необходимо использовать, так как, не найдя его система будет заполнять строку всякой «ненужной информацией».
Пример: char s[10], - можно рассматривать как строку из 9-ти элементов, так как один символ – “\0”.
Со строками можно работать, как и с обычными массивами, т.е. возможна и начальная инициализация: char s[10] = {‘0’, ‘1’, …, ‘8’, ‘\0’}.
getchar(), - функция, считывающая один символ из вводимых.
(ввод строки): for (I=0; I<9&&(S[I]=getchar())!=’\n’; I++)
S[I]=’\0’
Для ввода строк символов может быть также использована функция gets(<идент.>) (ее прототип находится в файле stdio.h).
Если string - массив символов, то ввести строку с клавиатуры можно так:
gets(string);
(ввод оканчивается нажатием клавиши <Enter>).
Для вывода строк символов помимо потокового и форматированного вывода может использоваться функции puts(<идент.>) (ее прототип находятся в файле stdio.h). следующим образом:
|
|
puts(string);
Отметим также, что для работы со строками существует специальная библиотека функций, прототипы которых находятся в файле string.h.
Функции работы со строками:
1. strlen(<выр.>), - определяет длину строки, без учета служебного символа ‘\0’.
Используется значение самой функции.
2. strcpy(<идент.>,<выр.>), - <идент.> и <выр.> должны быть строкового типа; после вызова этой функции идентификатору присваивается значения выражения.
Здесь используется побочный результат вызова ф-ии(т.е. идентификатор принимает значение выражения), значит само значение ф-ии НЕ используется
3. strcat(<идент.>, <выр.>), - склейка строк, т.е. после вызова данной ф-ии к значению идентификатора присоединяется значение выражения.
Значение ф-ии здесь НЕ используется
4. strcmp(<выр. 1>, <выр. 2>), - посимвольное сравнение строк слева направо.
Из кодов ASCII символов строки <выражения1> вычитаются коды символов строки <выражения2>.Данная функция возвращает значение ноль, если строки равны(т.е. все коды символов совпали); отрицательное значение, если строка <выр.1> меньше строки <выр.2> и положительное значение если строка <выр.1> больше строки <выр.2>.
Здесь используется само значение функции
Копирование части строки S с позиции M в количестве N:
for (I=0; I<N; S1[I] = S[M+I-1], I++);
S1[I] = ‘\0’;
Удаление символов из строки S с позиции M в количестве N:
K=strlen(S);
for (I=0; I<K-N-M+2; S[M+I-1]=S[M+N+I-1], I++);
Вставка в строку S выражения с позиции M:
for(I=0; I<strlen(S)-M+2; S1[I]=S[M+I]-1, I++);
S[M-1]=’\0’;
strcat(S,<выр.>);
strcat(S, S1).