Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 11_Строки_Основы (1)

.pdf
Скачиваний:
30
Добавлен:
14.03.2016
Размер:
180.18 Кб
Скачать

Пример обращения к символам многострочного текста (вариант 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