Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² языкС C

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² C, ΠΊΠ°ΠΊ ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования высокого уровня Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, входящий Π² систСму Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² языка. Π’Π°ΠΊ ΠΊΠ°ΠΊ язык C ΠΏΠΎ своСму ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ являСтся языком систСмного программирования, Ρ‚ΠΎ строковый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² C ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ отсутствуСт, Π° Π² качСствС строк Π² Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ массивы символов.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ слоТилось Π΄Π²Π° прСдставлСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° строк:

Π€ΠΎΡ€ΠΌΠ°Ρ‚ ANSI устанавливаСт, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² строкС являСтся Π΅Π΅ Π΄Π»ΠΈΠ½Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ сами символы строки. НапримСр, прСдставлСниС строки «ΠœΠΎΡ строка!» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

11 ‘М’ ‘ΠΎ’ ‘я’ ‘ ‘ ‘с’ ‘Ρ‚’ ‘Ρ€’ ‘ΠΎ’ ‘ΠΊ’ ‘Π°’ ‘!’
Π’ строках с Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΌ Π½ΡƒΠ»Π΅ΠΌ, Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠ΅ символы строки ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π° ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ строки являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ноль. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ рассмотрСнной Ρ€Π°Π½Π΅Π΅ строки Π² этом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

‘М’ ‘ΠΎ’ ‘я’ ‘ ‘ ‘с’ ‘Ρ‚’ ‘Ρ€’ ‘ΠΎ’ ‘ΠΊ’ ‘Π°’ ‘!’ 0

ОбъявлСниС строк Π² C

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ посрСдством массивов символов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ объявлСниС ASCII строки ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

char имя[длина];
ОбъявлСниС строки Π² Π‘ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ синтаксис, Ρ‡Ρ‚ΠΎ ΠΈ объявлСниС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ символьного массива. Π”Π»ΠΈΠ½Π° строки Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² стандартС C89 – константа, Π² стандартС C99 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ). Π”Π»ΠΈΠ½Π° строки указываСтся с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ нуля, поэтому максимальноС количСство Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ… символов Π² строкС Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС Π΅Π΅ Π΄Π»ΠΈΠ½Ρ‹. НапримСр, строка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ максимально Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ символов, Ссли объявлСна ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
char str[21]; Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ строки Π² Π‘ осущСствляСтся ΠΏΡ€ΠΈ Π΅Π΅ объявлСнии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:
char str[Π΄Π»ΠΈΠ½Π°] = строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π»;

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» – строка ASCII символов Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ объявлСния строк с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ:

char str1[20] = «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: «, str2[20] = «»;

const char message[] = «Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС!»;

Π Π°Π±ΠΎΡ‚Π° со строками Π² Π‘

Π’Π°ΠΊ ΠΊΠ°ΠΊ строки Π½Π° языкС Π‘ ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивами символов, Ρ‚ΠΎ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ символу строки ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ Π΅Π³ΠΎ индСксу. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ синтаксис обращСния ΠΊ элСмСнту массива, поэтому ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ Π² строкС ΠΈΠΌΠ΅Π΅Ρ‚ индСкс ноль. НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² строкС str осущСствляСтся Π·Π°ΠΌΠ΅Π½Π° всСх символов ‘a’ Π½Π° символы ‘A’ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ строк Π² Π‘

ОбъявлСниС массивов строк Π² языкС Π‘ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы символов, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:
char имя[количСство][Π΄Π»ΠΈΠ½Π°];

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ указываСтся количСство строк Π² массивС, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ – максимальная (с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ нуля) Π΄Π»ΠΈΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки. НапримСр, объявлСниС массива ΠΈΠ· пяти строк максимальной Π΄Π»ΠΈΠ½ΠΎΠΉ 30 Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ… символов Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

Число строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ количСству строк Π² массивС. Если число строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² мСньшС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива, Ρ‚ΠΎ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ пустыми строками. Π”Π»ΠΈΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ строго мСньшС значСния Π΄Π»ΠΈΠ½Ρ‹ строки (для записи Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ нуля).

ΠŸΡ€ΠΈ объявлСнии массивов строк с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ допускаСтся Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ количСство строк Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, количСство строк Π² массивС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ автоматичСски ΠΏΠΎ числу ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ².
НапримСр, массив ΠΈΠ· сСми строк:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками Π² Π‘

ВсС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹:

Π’Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ строк Π² Π‘

Для Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° строковой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° (printf ΠΈ scanf). Для этого Π² строкС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ строковой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ спСцификатор Ρ‚ΠΈΠΏΠ° %s. НапримСр, Π²Π²ΠΎΠ΄ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ строковой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

char str[31] = «»;
printf(«Π’Π²Π΅Π΄ΠΈΡ‚Π΅ строку: «);
scanf(«%30s”,str);
printf(«Π’Ρ‹ Π²Π²Π΅Π»ΠΈ: %s”,str);

НСдостатком Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ scanf ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ строковых Π΄Π°Π½Π½Ρ‹Ρ… являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ символами раздСлитСлями Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ввСсти строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ нСсколько слов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ табуляциями. НапримСр, Ссли Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π΄Π΅Ρ‚ строку: «Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… слов», Ρ‚ΠΎ Π½Π° экранС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅».
Для Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° строк Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ stdio.h содСрТатся спСциализированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gets ΠΈ puts.

Ѐункция gets ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Π²Π²ΠΎΠ΄Π° строк ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ:
char * gets(char *buffer);

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ gets катСгоричСски Π½Π΅ рСкомСндуСтся, Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρƒ строки, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ произвСсти ΠΊ ошибкам. ВмСсто Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция fgets с трСмя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

char * fgets(char * buffer, int size, FILE * stream);

Ѐункция puts ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Π²Ρ‹Π²ΠΎΠ΄Π° строк ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ:
int puts(const char *string);

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ строки с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ fgets ΠΈ puts Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

Помимо Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ stdio.h ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π² строки. Ѐункция Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΈΠ· строки ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° Π² строку ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строк

Π’ Π‘ для прСобразования строк, содСрТащих числа, Π² числСнныС значСния Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ stdlib.h
прСдусмотрСн ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:
double atof(const char *string); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² число Ρ‚ΠΈΠΏΠ° double
int atoi(const char *string); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² число Ρ‚ΠΈΠΏΠ° int
long int atol(const char *string); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² число Ρ‚ΠΈΠΏΠ° long int
long long int atoll(const char *string); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² число Ρ‚ΠΈΠΏΠ° long long int

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ прСдставлСниС вСщСствСнного числа Π² тСкстовой строкС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ:

ПослС символов E, e указываСтся порядок числа. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ прСдставлСниС Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π² тСкстовой строкС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ:

Помимо ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ stdlib.h доступны Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования строк Π² вСщСствСнныС числа:

АналогичныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ для прСобразования строк Π² цСлочислСнныС значСния:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСобразования (числСнныС значСния Π² строки) Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ stdlib.h ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ стандартом, ΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚. Для прСобразования числСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² строковыС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sprintf ΠΈ snprintf.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° строк

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ string.h ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дСйствий Π½Π°Π΄ строками.
Ѐункция вычислСния Π΄Π»ΠΈΠ½Ρ‹ строки:
size_t strlen(const char *string);

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ копирования строк:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ сравнСния строк:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ сравнСниС строк ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚:

ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ссли string1 большС string2;
ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ссли string1 мСньшС string2;
Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ссли string1 совпадаСт с string2;

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ объСдинСния (ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ) строк:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска символа Π² строкС:

Ѐункция поиска строки Π² строкС:
char * strstr(const char *str, const char *substr);

Ѐункция поиска ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π² строкС ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° символов:
size_t strcspn(const char *str, const char *charset);

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π² строкС Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΌΡƒ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ символов:
size_t strspn(const char *str, const char *charset);

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π² строкС ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° символов:
char * strpbrk(const char *str, const char *charset);

Ѐункция поиска ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° Π² строкС:
char * strtok(char * restrict string, const char * restrict charset);

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡƒΡ€ΠΎΠΊΠ°

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка?

Если Π² сСрСдинС XX Π²Π΅ΠΊΠ° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ использовались, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для выполнСния слоТных матСматичСских расчётов, сСйчас ΠΈΡ… основная Ρ€Π°Π±ΠΎΡ‚Π° β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкстовой (символьной) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° ΡΠΊΡ€Π°Π½Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Π°Ρ строка β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов, располоТСнных Π² памяти рядом (Π² сосСдних ячСйках). Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с символами Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°: символы ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ массивы. Казалось Π±Ρ‹, массив β€” это ΠΈ Π΅ΡΡ‚ΡŒ символьная строка, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² школьном алгоритмичСском языкС ΠΈ Π² ПаскалС для строк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² создании Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ массив β€” это Π³Ρ€ΡƒΠΏΠΏΠ° символов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… нСзависим ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ (Π² школьном алгоритмичСском языкС ΠΈ Π² ПаскалС) Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ массив Π½ΡƒΠΆΠ½ΠΎ посимвольно, Π² Ρ†ΠΈΠΊΠ»Π΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·ΠΌΠ΅Ρ€ массива задаСтся ΠΏΡ€ΠΈ объявлСнии, ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ясно, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт:

β€’ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ†Π΅Π»ΠΎΠΉ символьной строкой ΠΊΠ°ΠΊ с Π΅Π΄ΠΈΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ;
β€’ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.

Π’Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² школьном алгоритмичСском языкС называСтся Π»ΠΈΡ‚Π΅Ρ€Π½Ρ‹ΠΌ ΠΈ обозначаСтся Π»ΠΈΡ‚ (ΠΎΡ‚ слова Β«Π»ΠΈΡ‚Π΅Ρ€Π½Ρ‹ΠΉΒ» β€” Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΉ), Π° Π² ПаскалС β€” строковым ΠΈ обозначаСтся string (Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ с Π°Π½Π³Π». β€” строка). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объявлСния строки:

Π»ΠΈΡ‚ s var s: string;

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² строку Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания:

s:=’Baca ΠΏΠΎΡˆΡ‘Π» Π³ΡƒΠ»ΡΡ‚ΡŒ’ s:=’Baca ΠΏΠΎΡˆΡ‘Π» Π³ΡƒΠ»ΡΡ‚ΡŒ’;

ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ строк Π² ПаскалС Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ readin (Π°Π½Π³Π», read, line β€” Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки) вмСсто read.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ строки (количСство символов Π² Π½Π΅ΠΉ). Π’ школьном алгоритмичСском языкС такая функция называСтся Π΄Π»ΠΈΠ½, Π° Π² ПаскалС β€” Length (Π² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ с Π°Π½Π³Π». β€” Π΄Π»ΠΈΠ½Π°). Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏ записываСтся Π΄Π»ΠΈΠ½Π° строки s:

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами строки, ΠΊ Π½ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊ элСмСнтам массива: Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€ символа. НапримСр, Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ символ строки Π½Π° ‘Π°’:

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π²Π²ΠΎΠ΄ΠΈΡ‚ строку с ΠΊΠ»Π°Π²ΠΈΠ° Ρ‚ΡƒΡ€Ρ‹, замСняСт Π² Π½Π΅ΠΉ всС Π±ΡƒΠΊΠ²Ρ‹ ‘Π°’ Π½Π° Π±ΡƒΠΊΠ²Ρ‹ ‘Π±’ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»Ρƒ Ρ‡Π΅Π½Π½ΡƒΡŽ строку Π½Π° экран.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ страница Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° ΡΠΊΡ€Π°Π½ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со строками

CΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΡƒΡ€ΠΎΠΊΠ°
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΡΡ‚Π°Ρ‚ΡŒ программистом

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ основам программирования Π½Π° C для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ².

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹

ПослСдниС новости

YoungCoder Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈ Π½Π° StepikΠ΅. Π—Π°ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ: https://vk.cc/75rISy

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° курс, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π‘Ρ‚Π΅ΠΏΠΈΠΊΠ΅: https://vk.cc/75rIC4

Π­Ρ‚ΠΎ моя личная ссылка-ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Stepik для вас. Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡΡΡŒ ΠΏΠΎ этой ссылкС, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡΡΡŒ Π½Π° курсы ΠΈ Ρ€Π΅ΡˆΠ°Ρ Π·Π°Π΄Π°Ρ‡ΠΈ, Π’Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚Π΅ Π°Π²Ρ‚ΠΎΡ€Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ сайта ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ участиС Π² конкурсС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Stepik! ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ конкурса здСсь: https://vk.cc/75rKuS

Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅, 4 августа 2013 Π³.

ЗанятиС 14. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ массивы Π² языкС Π‘ΠΈ.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ этого ΡƒΡ€ΠΎΠΊΠ° «Π’Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк».

ОбъявлСниС ΠΈ инициализация строк.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран
Рис. 4. Π’Ρ‹Π²ΠΎΠ΄ Π½Π° экран символьного массива Π±Π΅Π· Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠΎΠ½Ρ†Π΅

Π’Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ строк.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран
Рис.9. ИспользованиС стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄Π° строки puts(), fputs(). ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°.

Если Π’Π°ΠΌ понравился этот ΡƒΡ€ΠΎΠΊ, расскаТитС ΠΎ Π½Π΅ΠΌ вашим Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ. Π’ этом Π’Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ основных ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй, располоТСнныС Π½ΠΈΠΆΠ΅. Π’Π°ΠΌ остаСтся всСго лишь ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ любой ΠΈΠ· Π½ΠΈΡ….

123 коммСнтария :

Π‘Π°ΠΌΡ‹ΠΉ нСпонятный ΡƒΡ€ΠΎΠΊ для мСня πŸ™
ОсобСнно с Π΄Π»ΠΈΠ½Π½ΠΎΠΉ строки.
«ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ функция с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ символа ΠΊΠΎΠ½Ρ†Π° строки. Π’ нашСм случаС это 10, Ρ‚.Π΅. Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΈΠ· Π½ΠΈΡ… Π΄Π΅Π²ΡΡ‚ΡŒ, ΠΈ ΠΎΠ΄ΠΈΠ½ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ для ΠΊΠΎΠ½Ρ†Π° строки.»

ΠŸΠΎΡ‡Π΅ΠΌΡƒ 9 Π΄Π° Π΅Ρ‰Π΅ ΠΈ минус ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Π΅Ρ† строки ΠΈ Ρ‚ΠΎΠ³ΠΎ 8? А Π½Π° Π²Ρ‹Π²ΠΎΠ΄Π΅ всС Ρ€Π°Π²Π½ΠΎ получаСтся, Ρ‡Ρ‚ΠΎ считали ΠΈ Π²Ρ‹Π²Π΅Π»ΠΈ 9 символов. (Листинг 14.8)

ПослСдний символ 100% записываСтся Π² ΠΊΠΎΠ½Π΅Ρ† строки ΠΈ считаСтся n-Π½Ρ‹ΠΌ (послСдним) элСмСнтом массива? Как этот символ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ? Ρ‚.Π΅. ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ for (i = 0; i == ΠΊΠΎΠ½Π΅Ρ† строки; i++); (Π°Π³Π° ΠΏΠΎΠΊΠ° Ρ‡ΠΈΡ‚Π°Π» ΠΈΠ·Π²ΠΈΠ»ΠΈΠ½Π° ΡˆΠ΅Π²Π΅Π»ΡŒΠ½ΡƒΠ»Π°ΡΡŒ. НС знаю Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π»ΠΈ сторону πŸ™‚ ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСльзя Ρ‚.ΠΊ. ΠΌΡ‹ сначала i ΠΏΡ€ΠΈΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ числу, Π° ΠΏΠΎΡ‚ΠΎΠΌ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π΅ Ρ€Π°Π²Π΅Π½ΠΎ Π»ΠΈ ΠΎΠ½ символу. Π’ΠΎΠ³Π΄Π° всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ понятно ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ», Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΠ½ выполнялся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки).

Π― Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ коряво написал. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ 10 ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Из Π½ΠΈΡ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… 9. А дСсятый, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Π΅Ρ† строки.

Π”Π»ΠΈΠ½Π° массива ΠΈ Π΄Π»ΠΈΠ½Π½Π° строки это Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ вСдь. Π”Π»ΠΈΠ½Π½Π° массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ 100 элСмСнтов, Π° Π²ΠΎΡ‚ Π΄Π»ΠΈΠ½Π° строки, которая хранится Π² этом массивС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ мСньшС. НапримСр, Литстинг 14.3
Π”Π»ΠΈΠ½Π½Π° массива str 17 элСмСнтов, Π° Π΄Π»ΠΈΠ½Π° строки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ‚ΡƒΠ΄Π° помСстили всСго Π΄Π²Π΅Π½Π°Π΄Ρ†Π°Ρ‚ΡŒ. Из Π½ΠΈΡ…, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ 11 Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΈ послСдний, Π΄Π²Π΅Π½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΉ символ ΠΊΠΎΠ½Ρ†Π° строки. )

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ этих пояснСний ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° свои послСдниС вопросы ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. Если Π½Π΅ получится, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ я ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Ρƒ ΠΈΠ»ΠΈ Π΄Π°ΠΌ Π΅Ρ‰Π΅ подсказку. )

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки хранят Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², названия ΠΊΠ½ΠΈΠ³, ΠΈΠΌΠ΅Π½Π° слуТащих ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ сочСтания. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C++ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки. Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² C++ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки хранятся Π² массивС Ρ‚ΠΈΠΏΠ° char, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заканчиваСтся символом NULL (ΠΈΠ»ΠΈ ASCII 0). Π’ Π΄Π°Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ этапа выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ строками. К ΠΊΠΎΠ½Ρ†Ρƒ этого ΡƒΡ€ΠΎΠΊΠ° Π²Ρ‹ освоитС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C++ хранят ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки ΠΊΠ°ΠΊ массив Ρ‚ΠΈΠΏΠ° char. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки. ЭкспСримСнтируйтС с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, прСдставлСнной Π² этом ΡƒΡ€ΠΎΠΊΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒΡΡ с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ строками. Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ строками ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами, описанной Π² ΡƒΡ€ΠΎΠΊΠ΅ 16.

ΠžΠ‘ΠͺΠ―Π’Π›Π•ΠΠ˜Π• Π‘Π˜ΠœΠ’ΠžΠ›Π¬ΠΠ«Π₯ БВРОК Π’ ΠŸΠ ΠžΠ“Π ΠΠœΠœΠΠ₯

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Π½Π° C++ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки для хранСния ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ символьной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Для объявлСния символьной строки Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ просто ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ массив Ρ‚ΠΈΠΏΠ° char с количСством элСмСнтов, достаточным для хранСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… символов. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ объявлСниС создаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ символьной строки с ΠΈΠΌΠ΅Π½Π΅ΠΌ filename, ΡΠΏΠΎΡΠΎΠ±Π½ΡƒΡŽ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 64 символа (Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ символ NULL являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· этих 64 символов):

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· рис. 17.1, это объявлСниС создаСт массив с элСмСнтами, индСксируСмыми ΠΎΡ‚ filename[0] Π΄ΠΎ filename[63].

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран

Рис. 17.1. C++ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку ΠΊΠ°ΠΊ массив Ρ‚ΠΈΠΏΠ° char.

Π“Π»Π°Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ строками ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ массивов Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ C++ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ послСдний элСмСнт массива, Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C++ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠ½Π΅Ρ† символьной строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа NULL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² C++ изобраТаСтся ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ ‘\0’. Когда Π²Ρ‹ присваиваСтС символы символьной строкС, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ символ NULL (‘\0’) послС послСднСго символа Π² строкС. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ALPHABET. CPP присваиваСт Π±ΡƒΠΊΠ²Ρ‹ ΠΎΡ‚ А Π΄ΠΎ Π― ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ alphabet, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° добавляСт символ NULL Π² эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ cout.

<
char alphabet [34]; // 33 Π±ΡƒΠΊΠ²Ρ‹ плюс NULL char letter;
int index;
for (letter = ‘A’, index = 0; letter letter++, index++) alphabet[index] = letter;
alphabet[index] = NULL;
cout » >

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° присваиваСт строкС символ NULL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ послСдний символ строки:

Когда Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ cout Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку, ΠΎΠ½ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ символы строки, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтит символ NULL. ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, cΠΈΠΌΠ²ΠΎΠ» NULL ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ послСдний символ Π² строкС.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ†ΠΈΠΊΠ» for, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ появляСтся Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ†ΠΈΠΊΠ» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (letter ΠΈ index). Когда Ρ†ΠΈΠΊΠ» for ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, раздСляйтС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ запятой (запятая Ρ‚ΠΎΠΆΠ΅ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ C++):

C++ автоматичСски добавляСт NULL ΠΊ строковым константам

ВсС созданныС Π²Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ использовали ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строковыС константы, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

ΠŸΡ€ΠΈ создании символьной строковой константы компилятор C++ автоматичСски добавляСт символ NULL, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 17.2.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран

Рис. 17.2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C++ автоматичСски добавляСт символ NULL ΠΊ строковым константам.

Когда ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выводят ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строковыС константы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° cout, cout ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ символ NULL (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компилятор добавляСт ΠΊ строкС) для опрСдСлСния послСднСго символа Π²Ρ‹Π²ΠΎΠ΄Π°.

Бимвольная строка прСдставляСт собой массив символов, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт символ NULL (‘\0’). ΠŸΡ€ΠΈ объявлСнии символьной строки Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ массив Ρ‚ΠΈΠΏΠ° char. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ·Π΄Π½Π΅Π΅ присваиваСт символы строкС, ΠΎΠ½Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ символа NULL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΊΠΎΠ½Π΅Ρ† строки.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ строковыС константы, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, компилятор C++ автоматичСски добавляСт символ NULL. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ C++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ символ NULL для опрСдСлСния послСднСго символа строки.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° LOOPNULL.CPP слСгка измСняСт ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for для Π²Ρ‹Π²ΠΎΠ΄Π° содСрТимого строки:

<
char alphabet[34]; //33 символа плюс NULL char letter;
int index;
for (letter = ‘A’, index = 0; letter index++) alphabet[index] = letter;
alphabet[index] = NULL;
for (index = 0; alphabet[index] 1= NULL; index++) cout cout >

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ†ΠΈΠΊΠ» for ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ исслСдуСт символы строки. Если символ Π½Π΅ NULL (Π½Π΅ послСдний символ строки), Ρ†ΠΈΠΊΠ» Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ символ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ индСкс, ΠΈ процСсс продолТаСтся.

Как ‘А’ отличаСтся ΠΎΡ‚ «Π»

ΠŸΡ€ΠΈ рассмотрСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C++ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ символы, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ‘А’) ΠΈ символы, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ символьная строка ΠΊΠ°ΠΊ вывСсти строку Π½Π° экран

Рис. 17.3. Как компилятор C++ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ константу ‘А’ ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ константу «Π».

Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ («Π»). Π‘ΠΈΠΌΠ²ΠΎΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ прСдставляСт собой ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ константу. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C++ выдСляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ памяти для хранСния символьной константы. Однако символ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… прСдставляСт собой ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ константу β€” ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ символ ΠΈ символ NULL (добавляСмый компилятором). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, компилятор Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° для символьной строки. Рисунок 17.3 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΊΠ°ΠΊ компилятор C++ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ константу ‘А’ ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ константу «Π».

Π˜ΠΠ˜Π¦Π˜ΠΠ›Π˜Π—ΠΠ¦Π˜Π― Π‘Π˜ΠœΠ’ΠžΠ›Π¬ΠΠžΠ™ БВРОКИ

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΈΠ· ΡƒΡ€ΠΎΠΊΠ° 16, C++ позволяСт Π²Π°ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массивы ΠΏΡ€ΠΈ объявлСнии. Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки C++ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ символьной строки ΠΏΡ€ΠΈ объявлСнии ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ строку Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

char title[64] = «Π£Ρ‡ΠΈΠΌΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° языкС C++»;

Если количСство символов, присваиваСмоС строкС, мСньшС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов C++ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ символы NULL ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠΌΡΡ элСмСнтам строкового массива. Как ΠΈ Π² случаС с массивами Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈ объявлСнии, компилятор C++ распрСдСлит достаточно памяти для размСщСния ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠΊΠ² ΠΈ символа NULL:

char title[] = «Π£Ρ‡ΠΈΠΌΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° языкС C++»;

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° INIT_STR.CPP ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку ΠΏΡ€ΠΈ объявлСнии:

<
char title[64] = «Π£Ρ‡ΠΈΠΌΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° языкС C++»;
char lesson[64] = «Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки»;
cout cout » >

НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, прСдставлСнныС Π² ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части ΠΊΠ½ΠΈΠ³ΠΈ, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом. НайдитС врСмя для экспСримСнта с этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, измСняя символы, присваиваСмыС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС.

ΠŸΠ•Π Π•Π”ΠΠ§Π БВРОК Π’ ЀУНКЦИИ

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° символьной строки Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ любого массива Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ массива (char) ΠΈ Π»Π΅Π²ΡƒΡŽ ΠΈ ΠΏΡ€Π°Π²ΡƒΡŽ скобки массива. Π’Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ строки. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° SHOW_STR.CPP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ show_string для Π²Ρ‹Π²ΠΎΠ΄Π° символьной строки Π½Π° экран:

void show_string(char string[])

<
show_string(«ΠŸΡ€ΠΈΠ²Π΅Ρ‚, C++!»);
show_string(«Π£Ρ‡ΡƒΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° C++»);
>

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, функция show_string Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ символьной строки ΠΊΠ°ΠΊ массив:

Π’Π°ΠΊ ΠΊΠ°ΠΊ символ NULL ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† строки, функция Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π΄Π°Π΅Ρ‚ количСство элСмСнтов Π² массивС. ВмСсто этого функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ послСдний элСмСнт, просто найдя Π² массивС символ NULL.

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ C++ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ символ NULL для опрСдСлСния ΠΊΠΎΠ½Ρ†Π° строки. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° STR_LEN.CPP создаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ string_length, которая ΠΈΡ‰Π΅Ρ‚ символ NULL Π² строкС для опрСдСлСния количСства символов, содСрТащихся Π² строкС. Π”Π°Π»Π΅Π΅ функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π΄Π»ΠΈΠ½Ρ‹ строки Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, отобраТая Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π½Π° экранС:

int string_length(char string[])

<
char title[] = «Π£Ρ‡ΠΈΠΌΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° языкС C++»;
char lesson[] = «Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки»;
cout » » cout » » >

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, функция запускаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа строки (элСмСнт 0) ΠΈ Π·Π°Ρ‚Π΅ΠΌ исслСдуСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтит NULL. Рассматривая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C++, Π²Ρ‹ встрСтитС Ρ†Π΅Π»Ρ‹ΠΉ ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки Π² поисках символа NULL.

ΠŸΠ Π•Π˜ΠœΠ£Π©Π•Π‘Π’Π’Π Π’ΠžΠ“Πž, ЧВО NULL ΠŸΠ Π•Π”Π‘Π’ΠΠ’Π›Π―Π•Π’ Π‘ΠžΠ‘ΠžΠ™ ASCII 0

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, символ NULL прСдставляСт собой символ ASCII 0. Π’ ΡƒΡ€ΠΎΠΊΠ΅ 7 Π²Ρ‹ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ C++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ лоТь. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ символ NULL Ρ€Π°Π²Π΅Π½ 0, ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. НапримСр, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки символ Π·Π° символом Π² поискС NULL. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» for ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ NULL Π² строкС:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ символ NULL Ρ€Π°Π²Π΅Π½ 0, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ‰ΡƒΡ‚ NULL, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠΊΠ° символ, содСрТащийся Π² string[index] Π½Π΅ NULL (0 ΠΈΠ»ΠΈ лоТь), Ρ†ΠΈΠΊΠ» продолТаСтся.

Π˜Π‘ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠΠ˜Π• Π‘Π’Π ΠžΠšΠžΠ’Π«Π₯ Π€Π£ΠΠšΠ¦Π˜Π™ Π‘Π˜Π‘Π›Π˜ΠžΠ’Π•ΠšΠ˜ ЭВАПА Π’Π«ΠŸΠžΠ›ΠΠ•ΠΠ˜Π―

Из ΡƒΡ€ΠΎΠΊΠ° 11 Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов C++ обСспСчиваСт ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ этапа выполнСния. Рассматривая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ этапа выполнСния, Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° содСрТат ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… строками. НапримСр, функция strupr ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку Π² строку Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра. Подобно этому, функция strlen Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство символов Π² строкС. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ этапа выполнСния ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄Π°ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ строки Π² поисках ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ символа. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° STRUPR.CPP ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ strupr ΠΈ strlwr Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ этапа выполнСния:

#include // Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹
// Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ strupr ΠΈ strlwr

void main(void)
<
char title[] = «Π£Ρ‡ΠΈΠΌΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° языкС C++»;
char lesson[] = «Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки»;
cout » cout » >

ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… строками ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π°ΠΌ врСмя, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ для программирования. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ врСмя Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ копию Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° STRING.H для опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ манипулирования строками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ вашСго компилятора.

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ

Как Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ строками, ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° символ NULL ΠΊΠ°ΠΊ Π½Π° ΠΊΠΎΠ½Π΅Ρ† строки. Если ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ строки символам, Ρ‚ΠΎ слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ символ NULL Π² качСствС послСднСго символа строки. Если ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ NULL ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° символ NULL, Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

ЧВО Π’ΠΠœ ΠΠ•ΠžΠ‘Π₯ΠžΠ”Π˜ΠœΠž ЗНАВЬ

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C++ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки. Из этого ΡƒΡ€ΠΎΠΊΠ° Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со строками. Из ΡƒΡ€ΠΎΠΊΠ° 18 Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… структуры C++. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ структуру, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ слуТащСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π³ΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ, возраст, ΠΎΠΊΠ»Π°Π΄ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Однако, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΡƒΡ€ΠΎΠΊΡƒ 18, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ освоили ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *