Лекции по проге / 11_Строки_Основы (1)
.pdf
Пример обращения к символам многострочного текста (вариант 1)
students
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 10 11 |
12 |
13 14 15 16 |
17 18 |
19 20 |
21 |
|||||||
|
К |
о |
з |
л |
о |
в |
|
А |
н |
т |
о |
н |
|
П |
е |
т |
р |
о |
в |
и |
ч |
\0 |
1 |
А |
б |
р |
а |
м |
о |
в |
|
И |
в |
а |
н |
|
И |
в |
а |
н |
о |
в |
и |
ч |
\0 |
2 |
Ж |
у |
к |
|
П |
е |
т |
р |
|
П |
е |
т |
р |
о |
в |
и |
ч |
\0 |
|
|
|
|


FIO
Сначала получим строку (указатель на первый символ строки), содержащую ФИО 1-го студента, а затем обратимся к ее части
char *FIO; |
// указатель на ФИО студента |
|
FIO = students[0]; |
// |
получаем строку |
21 printf("%s", FIO + 7); |
// |
обращаемся к подстроке |
Пример обращения к символам многострочного текста (вариант 2)
|
students |
|
|
|
|
|
|
|
|
|
students[0] + 7 |
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
0 |
1 |
2 |
|
3 |
4 |
5 |
6 |
7 |
8 |
9 10 11 |
12 |
13 14 |
15 16 |
17 |
18 |
19 20 |
21 |
|||||||||
0 |
К |
о |
з |
л |
о |
в |
|
|
|
А |
|
|
н |
т |
о |
н |
|
П |
е |
т |
р |
о |
в |
и |
ч |
\0 |
|
1 |
А |
б |
р |
а |
м |
о |
в |
|
|
|
|
|
И |
в |
а |
н |
|
И |
в |
а |
н |
о |
в |
и |
ч |
\0 |
|
2 |
Ж |
у |
к |
|
|
П |
е |
т |
|
|
р |
|
|
|
П |
е |
т |
р |
о |
в |
и |
ч |
\0 |
|
|
|
|
Сначала получим строку (указатель на первый символ строки), содержащую ФИО 1-го студента, а затем
обратимся к ее части строка — указатель на первый
символ строки
printf("%s", students[0] + 7);
|
|
|
подстрока — указатель на |
22 |
первый символ подстроки |
Ввод строк (библиотека stdio.h)
char *gets( char *str );
Считывает строку с клавиатуры (концом строки считается символ перевода строки)
В конец строки добавляет нуль-символ
Возвращает NULL, если возникла ошибка ввода; иначе ― указатель на переданную строку
// Вводим название города char city[21];
23 gets( city );
Ввод строк (библиотека stdio.h)
scanf() со спецификатором ввода %s
Форматированный ввод строки
Концом строки считаются следующие разделители: пробел, символ табуляции и символ перевода строки
// Вводим ФИО по отдельным составляющим char surname[26], name[21], patronymic[26];
scanf("%s %s %s", surname, name, patronymic); Козлов Антон Петрович
24 surname = "Козлов" name = "Антон" patronymic = "Петрович"
Вывод строк (библиотека stdio.h)
int puts( const char *str );
Распечатывает строку на экране В конце строки печатает символ новой строки
Возвращается значение < 0, если возникает ошибка вывода
// Выводим название города char city[21] = "Volgograd"; puts( "Our city is" );
puts( city );
25
Our city is Volgograd
Вывод строк (библиотека stdio.h)
printf() со спецификатором вывода %s
Форматированная печать строки на экране
// Выводим название города char city[21] = "Volgograd";
printf("Our city is %s" , city );
Our city is Volgograd
26
Задание
Дан двумерный символьный массив char txt[3][21]
Запросить у пользователя его ФИО и записать в первую строку текста фамилию, во вторую — имя, в третью — отчество
Напечатать на экране фамилию и инициалы пользователя, например, Иванов И. К.
27
Пример ввода-вывода строк
char txt[3][21];// текст для хранения ФИО
// Вводим ФИО
puts("Input your surname"); gets(txt[0]);
puts("Input your name"); gets(txt[1]);
puts("Input your patronymic"); gets(txt[2]);
// Выводим фамилию и инициалы
printf("%s %c. %c.", txt[0], txt[1][0], txt[2][0]);
28
