int *daytab[13]
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 13 ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° char. Π Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ) ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π΄Π°Π²Π°ΡΡ, Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. Π ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ 5.12 ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.8. Π ΡΡΠ½ΠΊΡΠΈΡΡ day_of_year ΠΈ month_day Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π°Ρ. Π£ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ.
5.8 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ month_name(n), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΠΎΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ n-Π³ΠΎ ΠΌΠ΅ΡΡΡΠ°. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½Π° Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. Π€ΡΠ½ΠΊΡΠΈΡ month_name ΠΈΠΌΠ΅Π΅Ρ Π² ΡΠ²ΠΎΠ΅ΠΌ Π»ΠΈΡΠ½ΠΎΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ, Π½Π° ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π½.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ:
/* month_name: Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠΌΡ n-Π³ΠΎ ΠΌΠ΅ΡΡΡΠ° */
char *month_name(int n)
{
static char *name[] = {
"ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ ΠΌΠ΅ΡΡΡ",
"Π―Π½Π²Π°ΡΡ","Π€Π΅Π²ΡΠ°Π»Ρ","ΠΠ°ΡΡ","ΠΠΏΡΠ΅Π»Ρ","ΠΠ°ΠΉ","ΠΡΠ½Ρ",
"ΠΡΠ»Ρ","ΠΠ²Π³ΡΡΡ","Π‘Π΅Π½ΡΡΠ±ΡΡ","ΠΠΊΡΡΠ±ΡΡ","ΠΠΎΡΠ±ΡΡ","ΠΠ΅ΠΊΠ°Π±ΡΡ"
};
return (n βΉ 1 || n βΊ 12) ? name[0] : name[n];
}
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ name ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ lineptr Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ ΡΠ»ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ, ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ i-ΠΉ ΡΡΡΠΎΠΊΠΈ Π³Π΄Π΅-ΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ, ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½ΠΈΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π² name[i]. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° name Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΡΠΈΡΠ»ΠΈΡ Π΅Π³ΠΎ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π·Π°Π΄Π°Π½Π½ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
5.9 Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΎΡΠΈΠ² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΠ°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π‘ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, Π² ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π²ΡΠΎΠ΄Π΅ name ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ»Ρ Π΄Π²ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ:
int a[10][20];
int *b[10];
Π·Π°ΠΏΠΈΡΠΈ a[3][4] ΠΈ b[3][4] Π±ΡΠ΄ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° int. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ»ΡΠΊΠΎ a ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΈΠ½Π½ΠΎ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ: Π΄Π»Ρ Π΄Π²ΡΡ ΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° int Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΡΡΡ, Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° a[ΡΡΡΠΎΠΊΠ°][ΡΡΠΎΠ»Π±Π΅Ρ] ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΌΠ°ΡΡΠΈΠ²Π° Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅ 20 * ΡΡΡΠΎΠΊΠ° + ΡΡΠΎΠ»Π±Π΅Ρ, ΡΡΠΈΡΡΠ²Π°ΡΡΠ΅ΠΉ Π΅Π³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΡΠΎΠ΄Ρ. ΠΠ»Ρ b ΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ 10 ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΡΠΈΡΠ΅ΠΌ Π±Π΅Π· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π΄Π°Π²Π°ΡΡΡΡ ΡΠ²Π½ΠΎ -Π»ΠΈΠ±ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π»ΠΈΠ±ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ b ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π΄Π²Π°Π΄ΡΠ°ΡΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π³Π΄Π΅-ΡΠΎ Π±ΡΠ΄ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡΡΡΡΡ 200 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° int, ΠΈ Π΅ΡΠ΅ 10 ΡΡΠ΅Π΅ΠΊ Π΄Π»Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΆΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π΄Π»ΠΈΠ½Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° b Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π΄Π²Π°Π΄ΡΠ°ΡΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ; ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π΄ΡΡΠ³ΠΎΠΉ - Π½Π° ΠΏΡΡΡΠ΄Π΅ΡΡΡ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ Π²ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π½ΠΈ Π½Π° ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ.
ΠΠ°ΡΠΈ ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ ΠΊΠ°ΡΠ°Π»ΠΈΡΡ ΡΠ΅Π»ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΠΈΠΌΠΈΡΡ ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ month_name. Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ ΡΠΈΡΡΠ½ΠΎΠΊ:
char *name[] = {"ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΡΡ", "Π―Π½Π²", "Π€Π΅Π²Ρ", "ΠΠ°ΡΡ"};
Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΈΡΡΠ½ΠΊΠΎΠΌ Π΄Π»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
char aname[][15] = {"ΠΠ΅ΠΏΡΠ°Π². ΠΌΠ΅ΡΡΡ", "Π―Π½Π²", "Π€Π΅Π²Ρ", "ΠΠ°ΡΡ"};
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.9. ΠΠ΅ΡΠ΅ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ day_of_year ΠΈ month_day, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
5.10 ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π‘ΠΈ, ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° main ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΌ argc (ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ argument count), ΡΡΠΎΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΡΠΎΡΠΎΠΉ, argv (ΠΎΡ argument vector), ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ°ΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ.
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ - ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° echo ("ΡΡ ΠΎ"), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅, ΠΎΡΠ΄Π΅Π»ΡΡ ΠΈΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ. Π’Π°ΠΊ, ΠΊΠΎΠΌΠ°Π½Π΄Π°
echo ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉ, ΠΌΠΈΡ!
ΠΠ°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉ, ΠΌΠΈΡ!
ΠΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ argv[0] Π΅ΡΡΡ ΠΈΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°ΠΊ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ argc Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ²Π°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ 1. ΠΡΠ»ΠΈ argc ΡΠ°Π²Π΅Π½ 1, ΡΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅Ρ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ argc ΡΠ°Π²Π΅Π½ 3, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ argv[0], argv[1] ΠΈ argv[2] ΡΡΡΡ ΡΡΡΠΎΠΊΠΈ "echo", "ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉ," ΠΈ "ΠΌΠΈΡ!". ΠΠ΅ΡΠ²ΡΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ - ΡΡΠΎ argv[1], ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ - argv[argc-1]. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ°Π½Π΄Π°ΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ argv[argc] Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ» ΠΏΡΡΡΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠ΅ΡΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ echo ΡΡΠ°ΠΊΡΡΠ΅Ρ argv ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
#include βΉstdio.hβΊ
/* ΡΡ ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ: Π²Π΅ΡΡΠΈΡ 1 */
main(int argc, char *argv[])
{
int i;
for (i = 1; i βΉ argc; i++)
printf("%s%s", argv[i], (i βΉ argc-1) ? " " : ");
printf("\n");
return 0;
}
Π’Π°ΠΊ ΠΊΠ°ΠΊ argv - ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌ ΠΊΠ°ΠΊ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ, Π° Π½Π΅ ΠΊΠ°ΠΊ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠΈ argv, ΠΎΠ½ ΠΏΡΠΈΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° char; ΠΏΠ΅ΡΠ΅Π±ΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠ΅ΡΠΏΠ°Π½ argc.
#include βΉstdio.hβΊ
/* ΡΡ ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ; Π²Π΅ΡΡΠΈΡ 2 */
main(int argc, char *argv[])
{
while (--argc βΊ 0)
printf("%s%s", *++argv, (argc βΊ 1) ? " " : ");
print f("\n");
return 0;
}
ΠΡΠ³ΡΠΌΠ΅Π½Ρ argv - ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π°ΡΠ°Π»ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ++argv ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ++ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ argv[1],Π° Π½Π΅ argv[0]. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π°Π΅Ρ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ *argv. Π ΡΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ argc ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π½Π° 1, ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΡΡΠ°Π½Π΅Ρ Π½ΡΠ»Π΅ΠΌ, Π²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π±ΡΠ΄ΡΡ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Ρ. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ printf ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ ΡΠ°ΠΊ:
printf((argc βΊ 1)? "%s ": "%s", *++argv);
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠΎΡΠΌΠ°Ρ Π² printf ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠ±ΡΠ°Π·ΡΠ°, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π² ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ 4.1, ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΡΠ΅ΠΌ Π΅Π΅. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΠΎΠ±ΡΠ°Π·Π΅Ρ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΡ "Π²ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ" Π³Π»ΡΠ±ΠΎΠΊΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΡΡΠΎ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡΡΡΠΎΠΈΠΌ Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ grep ΠΈΠ· UNIXa, Ρ. Π΅. ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π·Π΅Ρ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π·Π°Π΄Π°Π²Π°Π»ΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
#include βΉstdio.hβΊ
#include βΉstring.hβΊ
#define MAXLINE 1000
int getline(char *line, int max);
/* find: ΠΏΠ΅ΡΠ°ΡΡ ΡΡΡΠΎΠΊ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ, Π·Π°Π΄Π°Π½Π½ΡΠΌ 1-ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ */
main(int argc, char *argv[])
{
char line[MAXLINE];
int found = 0;
if (argc != 2)
printf("ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π² find ΠΎΠ±ΡΠ°Π·Π΅Ρ\n");
else
while (getline(line, MAXLINE) βΊ 0)
if (strstr(line, argv[1]) βΊ= NULL) {
printf ("%s", line);
found++;
}
return found;
}
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ strstr(s,t) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ Π²ΡΡΡΠ΅ΡΠΈΠ²ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ t Π² ΡΡΡΠΎΠΊΠ΅ s ΠΈΠ»ΠΈ NULL, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ Π² s Π½Π΅ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΎΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ βΉstring.hβΊ.
ΠΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΈ Π΄Π°Π»ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Π²Π²ΠΎΠ΄ΠΈΠΌ Π΅ΡΠ΅ Π΄Π²Π° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΠ΅Ρ , Π² ΠΊΠΎΡΠΎΡΡΡ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ; Π²ΡΠΎΡΠΎΠΉ - ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π΅Π΅ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ.
ΠΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π‘ΠΈ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ UNIX Π·Π½Π°ΠΊ ΠΌΠΈΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π²Π²ΠΎΠ΄ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ -x ΡΠ»ΡΠΆΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΡΠ»ΠΎΠ²Π° "ΠΊΡΠΎΠΌΠ΅", ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅, Π° -n ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠΎΠΊ, ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°
find -x -n ΠΎΠ±ΡΠ°Π·Π΅Ρ
Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π·Π΅Ρ, ΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠ°ΠΆΠ΅Ρ Π΅Π΅ Π½ΠΎΠΌΠ΅Ρ.