}
~ 7 ~
В языке С нет специального типа данных для строковых переменных.
Для этих целей используются массивы символов (тип char).
Следующий
пример демонстрирует использование строк в программе:
char str_1[100] = {‘П’,’р’,’и’,’в’,’е’,’т’,’\0’};
char str_2[100] = “Привет”;
char str_3[] = “Привет”;
printf(“%s\n%s\n%s\n”,str_1,str_2,str_3);
В приведённом примере показаны три способа инициализации строковых
переменных. Первый способ является классическим объявлением массива,
второй и третий используются специально для строк. Причём в последнем
случае, компилятор сам определяет нужную
длину массива для записи
строки.
Символ ‘\0’ означает в языке С конец строки и все символы после него
игнорируются как символы строки.
Функции ввода строк
scantf(“%s”, имя строковой переменной);
gets(имя строковой переменной);
Функции вывода символа
printf(“%s”, имя строковой переменной);
puts(имя строковой переменной);
Для работы со строками можно использовать библиотеку стандартных
функций
, в которой имеются следующие функции работы со
строками:
1. Объединение строк или конкатенация-strcat(имя строки1, имя строки2);
2. Замена содержимого одной строки содержимым другой
strcpy(имя строки1, имя строки2);
3. Нахождение числа символов в строке-strlen(имя строки);
4. Сравнение Строки 1 и Строки 2-strcmp(имя строки1, имя строки2);
Возвращает 0, если строки равны, число меньше нуля, если Строка 1<Строка
2 и число больше нуля, если Строка 1>Строка2.
}
~ 8 ~
5. Преобразование строчных символов строки в прописные (обрабатывает
только буквы латинского алфавита)-strlwr(имя строки);
6. Преобразование прописных символов строки в строчные (обрабатывает
только буквы латинского алфавита)-strupr(имя строки);
7. Заполнение строки указанным при вызове функции символом
strset(имя строки, имя символа);
8. Поиск символа в строке. (Возвращает указатель на первый найденный
символ или, если символ не найден – NULL.)
strchr(имя строки, имя символа);
Функции в языке СИ оформляются следующим образом:
/* прототип функции */
long func(int, int, int*);
/ * описание функции * /
long func (a, b, с) // заголовок
int a,b,*с; // описание формальных параметров
{ long х; // описание локальных переменных
. . . // тело
функции
*с=3; // возврат результата по ссылке
return x; // возврат результата через имя функции
}
/* вызов функции */
main()
{
long r; int i, j, k; // описание локальных переменных
. . .
r = func (i, j, &k); // вызов
}
Указатель в СИ – переменная, содержащая адрес другой переменной.
Указатели должны быть описаны в виде
int *ip; // указатель на int
}
~ 9 ~
float *fp; // указатель на float
При работе с указателями используются унарные операции:
– обращение по адресу,
& – получение адреса.
Таким образом, можно записать
int x, *ip; // описания переменных
ip=&x; // присвоение адреса
*ip=3; // обращение по адресу
Если указателю присвоен
адрес элемента массива, его можно использовать
так же, как и имя массива. Следующие обращения к третьему элементу
массива s полностью эквивалентны:
int s[10], *p;
p=s; s[3]=0; // вариант 1
p[3]=0; // вариант 2
*(p+3)=0; // вариант 3
Операции инкремента (++) и декремента (––) изменяют указатель так, что он
будет указывать на соседний элемент данных такого же типа. Например, если
fp – указатель на float, операция fp++ увеличит fp на 4, т. е. на
количество
байт, занимаемых элементом типа float.
19>
Do'stlaringiz bilan baham: