Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ Π‘ΠΈ - руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 74

Автор M. УЭИВ

Π³Π΄Π΅ NULL ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Ρ„Π°ΠΉΠ»Π΅ stdio.h ΠΊΠ°ΠΊ 0. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ указатСля массиву name присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НаличиС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° позволяСт ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСй gets(name) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° EOF. Π­Ρ‚ΠΎΡ‚ двоякий ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½, Ρ‡Π΅ΠΌ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getchar( ), которая ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

while((ch = getchar( )) != EOF)

Ѐункция scanf( )

     ΠœΡ‹ ΡƒΠΆΠ΅ использовали Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ scanf( ) ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ %s для считывания строки. ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ scanf( ) ΠΈ gets( ) Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, Ρ‡Ρ‚ΠΎ достигли ΠΊΠΎΠ½Ρ†Π° строки: scanf( ) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° скорСС для получСния слова, Π° Π½Π΅ строки. Ѐункция gets( ), ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ всС символы Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° нс встрСтит ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ "новая строка". Ѐункция scanf( ) ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. Для любого ΠΈΠ· Π½ΠΈΡ… строка начинаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ нСпустого символа. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ %s, строка продолТаСтся Π΄ΠΎ (Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ пустого символа (ΠΏΡ€ΠΎΠ±Π΅Π», табуляция ΠΈΠ»ΠΈ новая строка). Если Π²Ρ‹ опрСдСляСтС Ρ€Π°Π·ΠΌΠ΅Ρ€ поля ΠΊΠ°ΠΊ %10s, Ρ‚ΠΎ функция scanf( ) считаСт Π½e Π±ΠΎΠ»Π΅Π΅ 10 символов ΠΈΠ»ΠΈ ΠΆΠ΅ считаСт Π΄ΠΎ любого ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ пустого символа.

     Π€ΡƒΠ½ΠΊΡ†ΠΈΡ scanf( ) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ числу счи Ρ‚Π°Π½Π½Ρ‹Ρ… символов, Ссли Π²Π²ΠΎΠ΄ ΠΏΡ€ΠΎΡˆΠ΅Π» ΡƒΡΠΏΠ΅Π½ΠΈΡŽ, ΠΈΠ»ΠΈ символ EОF, Π΅Π΅ Π»ΠΈ ΠΎΠ½ встрСтился.

/* scanf( ) ΠΈ подсчСт количСства */

main( )

{

static char name1[40], name2[11];

int count;

printf(" Π’Π²Π΅Π΄ΠΈΡ‚Π΅, поТалуйста, 2 ΠΈΠΌΠ΅Π½ΠΈ.\n");

count = scanf(" %s  %10s", name1, name2);

printf(" Π― считал %d ΠΈΠΌΠ΅Π½ %s ΠΈ %s.\n", count, name1, name2);

}

Π’ΠΎΡ‚ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π’Π²Π΅Π΄ΠΈΡ‚Π΅, поТалуйста, Π΄Π²Π° ΠΈΠΌΠ΅Π½ΠΈ.

ДТсссика  ДТукс.

Π― считал Π΄Π²Π° ΠΈΠΌΠ΅Π½ΠΈ

ДТсссика  ΠΈ  ДТукс.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅, поТалуйста, 2 ΠΈΠΌΠ΅Π½ΠΈ.

Π›ΠΈΠ·Π° АпплСботтхэм

Π― считал 2 ΠΈΠΌΠ΅Π½ΠΈ Π›ΠΈΠ·Π° ΠΈ АпплСботтхэм.


Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Ρ‹Π»ΠΈ считаны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 10 символов ΠΎΡ‚ АпплСботтхэм, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ использовали Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ %10s.

     Π•сли Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкст с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ gets( ). Она ΠΏΡ€ΠΎΡ‰Π΅ Π² использовании, быстрСС ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π°. Ѐункция scanf( ) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Π² основном для Π²Π²ΠΎΠ΄Π° смСси Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стандартной Ρ„ΠΎΡ€ΠΌΠ΅. НапримСр, Ссли каТдая вводимая строка содСрТит Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ инструмСнта, количСство Π΅Π³ΠΎ Π½Π° складС ΠΈ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ инструмСнта, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ scanf( ) ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅.

Π’Π«Π’ΠžΠ” БВРОК 

    ΠžΠΏΡΡ‚ΡŒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ систСмы ΠΊ систСмС. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ puts( ) ΠΈ printf( ) - Π΄Π²Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ лошадки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ строк.

Ѐункция puts( )

     Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ простая функция; Ρƒ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ строки. ΠΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… способов Π΅Π΅ примСнСния.

/* простыС Π²Ρ‹Π΄Π°Ρ‡ΠΈ */

#include <stdio.h>

#define DEF  "Π― строка #define."

main( )

{

static char str1[ ] = "Массив ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠΉ.";

static char *str2 = "Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠΉ.";

puts(" Π― Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ puts( )." );

puts(DEF);

puts(str1);

puts(str2);

puts(&str1[4]);

puts(str2 + 4);

}


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ

Π― Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ puts( ).

Π― строка #define.

Массив ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠΉ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠΉ.

ΠΈΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠΉ.

Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠΉ.


Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Ρ€Π°Π·Ρ‹ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΈ ΠΈΠΌΠ΅Π½Π° строк ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… массивов ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° послСдних ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ &strl[4] ссылаСтся Π½Π° пятый элСмСнт массива str1. Π­Ρ‚ΠΎΡ‚ элСмСнт содСрТит символ 'ΠΈ', ΠΈ функция puts( ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² качСствС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Аналогично str2 + 4 ссылаСтся Π½Π° ячСйку памяти, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ 'Π°' Π² "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅", ΠΈ с Π½Π΅Π΅ начинаСтся Π²Ρ‹Π²ΠΎΠ΄ строки.

Как puts( ) ΡƒΠ·Π½Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ? Она ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ссли встрСчаСт Π½ΡƒΠ»ΡŒ-символ, поэтому Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π». НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ!

/* Π½Π΅Ρ‚ строки! */

main( )

{

static char dont[ ] = (' H', ' Π“ , ' ! ', ' ! ');

puts(dont);  /* dont Π½Π΅ являСтся строкой */

}

     ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² dont отсутствуСт Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ Π½ΡƒΠ»ΡŒ-символ, ΠΎΠ½Π° Π½Π΅ являСтся строкой. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½ΡƒΠ»ΡŒ-символ отсутствуСт, puts( ) Π½Π΅ Π·Π½Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ. Она Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ ячСйки памяти, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° dont Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½ΡƒΠ»ΡŒ-символ. Если ΠΏΠΎΠ²Π΅Π·Π΅Ρ‚, ΠΎΠ½Π°, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΉΠ΄Π΅Ρ‚ Π΅Π³ΠΎ Π² блиТайшСй ячСйкС, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½e ΠΏΠΎΠ²Π΅Π·Ρ‚ΠΈ.

     ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ любая строка, вводимая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ puts( ), начинаСтся с Π½ΠΎΠ²ΠΎΠΉ строки. Если puts( ) Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ Π½ΡƒΠ»ΡŒ-символ, ΠΎΠ½Π° замСняСт Π΅Π³ΠΎ символом "Π½ΠΎΠ²ΠΎΠΉ строки" ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку.

Ѐункция printf( )

     ΠœΡ‹ ΡƒΠΆΠ΅ обсуТдали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ printf( ) довольно ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Подобно puts( ), ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ строки Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Ѐункция printf( ) ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Π°, Ρ‡Π΅ΠΌ puts( ), Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠ°.

     Π Π°Π·Π½ΠΈΡ†Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ printf( ) Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ автоматичСски ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку тСкста с Π½ΠΎΠ²ΠΎΠΉ строки. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ с Π½ΠΎΠ²Ρ‹Ρ… строк. Π’Π°ΠΊ,

printf(" %s\n" , string);

Π΄Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ

puts(string);

     Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π²ΠΎΠ΄Π° большСго числа символов ΠΈ большСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, printf( ) позволяСт Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ строки для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎΠΉ строкС. НапримСр:

printf(" Π₯ΠΎΡ€ΠΎΡˆΠΎ, %s, %s \n", name, MSG);

ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ " Π₯ΠΎΡ€ΠΎΡˆΠΎ" с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ c символьной строкой MSG Π² ΠΎΠ΄Π½Ρƒ строку.

Π‘ΠžΠ—Π”ΠΠΠ˜Π• Π‘ΠžΠ‘Π‘Π’Π’Π•ΠΠΠ«Π₯ Π€Π£ΠΠšΠ¦Π˜Π™

     ΠΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ сСбя ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этими Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌΠΈ функциями. Если Ρƒ вас Π½Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΎΠ½Π° Π²Π°ΠΌ Π½Π΅ нравится, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС вСрсии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого getchar( ) ΠΈ putchar( ).

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π½Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ puts( ). Π’ΠΎΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡƒΡ‚Π΅ΠΉ Π΅Π΅ создания:

/* put1  - ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ строку */

put1(string);

char *string;

{

while(*string != '\0') putchar(*string++);

putchar('\n');

}


     Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ string Π²Π½Π°Ρ‡Π°Π»Π΅ ссылаСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. ПослС ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π΅Π³ΠΎ содСрТимого ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ увСличиваСтся ΠΈ ссылаСтся ΡƒΠΆΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт. Π­Ρ‚ΠΎ продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ элСмСнта, содСрТащСго Π½ΡƒΠ»ΡŒ-символ. Π—Π°Ρ‚Π΅ΠΌ Π² ΠΊΠΎΠ½Ρ†Π΅ строки Π±ΡƒΠ΄Π΅Ρ‚ поставлСн символ Π½ΠΎΠ²ΠΎΠΉ строки.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ puts( ), Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° функция, которая, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сообщаСт, сколько Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΎ символов. Π­Ρ‚Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ:

/* put2- - ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ строку ΠΈ считываСт символы */

put2 (string);

char *string;

{

int count = 0;

while(*string != '\0') {

putchar(* string++);

count++;

putchar('\n');

return(count);

}

Π’Ρ‹Π·ΠΎΠ²:

put2(" ΠΏΠΈΡ†Ρ†Π°" );

ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ строку ΠΏΠΈΡ†Ρ†Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

num = puts(" ΠΏΠΈΡ†Ρ†Π°"); 

пСрСдаст, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, количСство символов Π² num; Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это число 5. Π’ΠΎΡ‚ нСсколько Π±ΠΎΠ»Π΅Π΅ слоТный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

/* Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ */

#include <stdio.h>

main( )

{

put1("Если Π±Ρ‹ я ΠΈΠΌΠ΅Π» ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅Π½Π΅Π³, сколько ΠΌΠΎΠ³Ρƒ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ,");

Ρ€rintf("Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ %d символа.\n",

put2(" Π― Π½ΠΈΠΊΠΎΠ³Π΄Π° Π±Ρ‹ Π½e Таловался, Ρ‡Ρ‚ΠΎ приходится Ρ‡ΠΈΠ½ΠΈΡ‚ΡŒ старыС ΡΡ‚ΡƒΠ»ΡŒΡ.");

}


(ΠœΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #include Ρ„Π°ΠΉΠ» stdio.h, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² нашСй систСмС Π² Π½Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° функция putchar( ), Π° ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² нашСй Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.)

Π”Π°-Π°, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ printf( ) для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ значСния put2( ), Π½ΠΎ Π² процСссС нахоТдСния значСния put2( ) ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ сначала Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ - Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ строку. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получаСтся ΠΏΡ€ΠΈ этом: