/* minprintf: ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ printf Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² */
void minprintf(char *fmt, β¦)
{
va_list ap; /* ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ */
char *p, *sval;
int ival;
double dval;
va_start(ap, fmt); /* ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ap Π½Π° 1-ΠΉ Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ */
for (p=fmt; *p; p++) {
if (*p !='%') {
putchar(*p);
continue;
}
switch (*++p) {
case 'd':
ival = va_arg(ap, int);
printf ("%d", ival);
break;
case 'f':
dval = va_arg(ap, double);
printf("%f", dval);
break;
case 's':
for (sval = va_arg(ap, char *); *sval; sval++)
putchar(*sval);
break;
default:
putchar(*p);
break;
}
}
va_end(ap); /* ΠΎΡΠΈΡΡΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ */
}
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 7.3. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅ minprintf Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ printf.
7.4 Π€ΠΎΡΠΌΠ°ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ (scanf)
Π€ΡΠ½ΠΊΡΠΈΡ scanf, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ°Ρ Π²Π²ΠΎΠ΄, ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ printf; ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΠΈΡ ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, Π½ΠΎ Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
int scanf(char *format, β¦)
Π€ΡΠ½ΠΊΡΠΈΡ scanf ΡΠΈΡΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌ ΡΡΡΠΎΠΊΠΈ format ΠΈ ΡΠ°ΡΡΡΠ»Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΠ²ΠΎΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΡΠ³ΡΠΌΠ΅Π½Ρ format ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅; Π΄ΡΡΠ³ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, Π³Π΄Π΅ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°ΠΊ ΠΈ Π΄Π»Ρ printf, Π² ΡΡΠΎΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ Π΄Π°Π΅ΡΡΡ ΡΠ²ΠΎΠ΄ΠΊΠ° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ , Π½ΠΎ ΠΎΡΠ½ΡΠ΄Ρ Π½Π΅ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π€ΡΠ½ΠΊΡΠΈΡ scanf ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΈΡΡΠ΅ΡΠΏΠ°Π»ΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌΠ°Ρ Π²Π΅Π»ΠΈΡΠΈΠ½Π° Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° scanf Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ . ΠΠΎ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° ΠΎΠ½Π° Π²ΡΠ΄Π°Π΅Ρ EOF. Π‘ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ EOF Π½Π΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½ΡΠ»Ρ scanf Π²ΡΠ΄Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ scanf ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²Π²ΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΡΠ°Π·Ρ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ sscanf, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΡΠ°Π΅Ρ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ (Π° Π½Π΅ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°).
int sscanf(char *string, char *format, arg1, arg2,β¦)
Π€ΡΠ½ΠΊΡΠΈΡ sscanf ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΡΡΠΎΠΊΡ string ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΎΡΠΌΠ°ΡΡ format ΠΈ ΡΠ°ΡΡΡΠ»Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² arg1, arg2 ΠΈ Ρ. Π΄. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ.
Π€ΠΎΡΠΌΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ Π²Π²ΠΎΠ΄Π°. Π Π½Π΅Π³ΠΎ ΠΌΠΎΠ³ΡΡ Π²Ρ ΠΎΠ΄ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
β’ ΠΡΠΎΠ±Π΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ.
β’ ΠΠ±ΡΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (ΠΈΡΠΊΠ»ΡΡΠ°Ρ %), ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΠΎΠ²ΠΏΠ°Π΄ΡΡ Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ, ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
β’ Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΎ Π·Π½Π°ΠΊΠ° % ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΡΠΈΠΏΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ, ΠΏΡΠΈΡΠ΅ΠΌ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π·Π΄Π΅ΡΡ ΡΠΊΠ°Π·Π°Π½Ρ: Π·Π½Π°ΠΊ * (ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ); ΡΠΈΡΠ»ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π΅ ΡΠΈΡΠΈΠ½Ρ ΠΏΠΎΠ»Ρ; Π±ΡΠΊΠ²Π° h, l ΠΈΠ»ΠΈ L, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ; ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (o, d, x).
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ±ΡΡΠ½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ *, ΡΠΎ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ° Π±Π΅Π· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ; ΠΎΠ½ΠΎ ΠΏΡΠΎΡΡΠΈΡΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ»Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π·Π°Π΄Π°Π½Π°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ» Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΌ, ΡΠΎ sscanf ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΡΡ. (Π‘ΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠΎΠ±Π΅Π»Π°, ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠ°ΡΠ΅ΡΠΊΠΈ, Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠ°Π½ΠΈΡΡ.)
Π‘ΠΈΠΌΠ²ΠΎΠ»-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΡΡΠΉ Π² Π‘ΠΈ. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 7.2.
ΠΠ΅ΡΠ΅Π΄ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ d, l, o, u ΠΈ x ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ Π±ΡΠΊΠ²Π° h, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ short * (Π° Π½Π΅ int *),ΠΈΠ»ΠΈ l (Π»Π°ΡΠΈΠ½ΡΠΊΠ°Ρ ell), ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ Π½Π° ΡΠΈΠΏ long *. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ e, f ΠΈ g ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ Π±ΡΠΊΠ²Π° l, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ, ΡΡΠΎ ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° - double * (Π° Π½Π΅ float *).
Π’Π°Π±Π»ΠΈΡΠ° 7.2 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ scanf
Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΠ²ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅; ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° d Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅: int * i ΡΠ΅Π»ΠΎΠ΅: int *. Π¦Π΅Π»ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΠΌ (Ρ 0 ΡΠ»Π΅Π²Π°) ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΌ (Ρ 0x ΠΈΠ»ΠΈ 0X ΡΠ»Π΅Π²Π°) o Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ (Ρ Π½ΡΠ»Π΅ΠΌ ΡΠ»Π΅Π²Π° ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ); int * u Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅; unsigned int * x ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ (Ρ 0x ΠΈΠ»ΠΈ 0X ΡΠ»Π΅Π²Π° ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ ); int * c ΡΠΈΠΌΠ²ΠΎΠ»Ρ; char *. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½) ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠΎΠΏΡΡΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²- ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΠ΄Π°Π²Π»ΡΠ΅ΡΡΡ; ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ %1s s Π‘ΡΡΠΎΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²(Π±Π΅Π· ΠΎΠ±ΡΠ°ΠΌΠ»ΡΡΡΠΈΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ); char *, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΉ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ ΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° '\0', ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ e, f, g ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ; ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ, Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ ΠΎΠ±Π΅ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅; float * % ΡΠ°ΠΌ Π·Π½Π°ΠΊ %, Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡΠ§ΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° ΠΈΠ· Π³Π»Π°Π²Ρ 4, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΠΌ Π²Π²ΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ scanf:
#include βΉstdio.hβΊ
main() /* ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ */ {
double sum, v;
sum = 0;
while (scanf ("%lf", &v) == 1)
printf("\t%.2f\n", sum += v);
return 0;
}
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΈΠ΄Π°
25 Π΄Π΅ΠΊ 1988
ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ scanf Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
int day, year; /* Π΄Π΅Π½Ρ, Π³ΠΎΠ΄ */
char monthname[20]; /* Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΡΠ° */
scanf ("%d %s %d", &day, monthname, &year);
ΠΠ½Π°ΠΊ & ΠΏΠ΅ΡΠ΅Π΄ monthname Π½Π΅ Π½ΡΠΆΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
Π ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π½Π΅ ΡΡΠ°ΡΡΠ²ΡΡΡΠΈΠ΅ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ; ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π½Π° Π²Π²ΠΎΠ΄Π΅. Π’Π°ΠΊ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠΈΡΠ°ΡΡ Π΄Π°ΡΡ Π²ΠΈΠ΄Π° mm/dd/yy Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ scanf:
int day, month, year; /* Π΄Π΅Π½Ρ, ΠΌΠ΅ΡΡΡ, Π³ΠΎΠ΄ */
scanf("%d/%d/%d", &day, &month, &year);
Π ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ scanf ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠΎΡΡΠΈΠΈ Π²Π²ΠΎΠ΄Π° ΠΎΠ½Π° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ- ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ (ΠΏΡΠΎΠ±Π΅Π»Ρ, ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, Π½ΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈ Ρ.Π΄.). ΠΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°, ΡΠ°ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅, Π΅ΡΠ»ΠΈ Π²Π²ΠΎΠ΄ΠΈΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ΄Π±ΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ sscanf. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ Ρ Π΄Π°ΡΠ°ΠΌΠΈ, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠΎΡΠΌ. Π’ΠΎΠ³Π΄Π° ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
while (getline(line, sizeof(line)) βΊ 0) {
if (sscanf(line, "%d %s %d", &day, monthname, &year) == 3)
printf("Π²epΠ½ΠΎ: %s\r", line); /* Π² Π²ΠΈΠ΄Π΅ 25 Π΄Π΅ΠΊ 1968 */
else if (sscanf(line, "%d/%d/%d", &month, &day, &year) == 3)
printf("Π²epΠ½ΠΎ: %s\n", line); /* Π² Π²ΠΈΠ΄Π΅ mm/dd/yy */