рдЬреЛ рдЬрд╛рд╕реВрд╕ рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП: рдЖрдзреА рд░рд╛рдд рдХреЗ рдХрдорд╛рдВрдбрд░ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рддреНрд░реБрдЯрд┐ рдвреВрдВрдвреЗрдВ

рдЧрд▓рддреА рдХрд╛ рдкрддрд╛ рд╣реИ!


рд╣рдо рдЖрдкрдХреЛ GNU рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдп рдореЗрдВ рдЧрд▓рддреА рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВ? рдмрд╕ рдРрд╕реЗ рд╣реАред рдпрд╣ рдордЬреЗрджрд╛рд░ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдирд╣реАрдВ, рд╣рдордиреЗ рдЭреВрда рдмреЛрд▓рд╛ рдерд╛ред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрдард┐рдирд╛рдИ рдХреЗ рд╕рд╛рде рдкрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд╕рд╛рдиреА рд╕реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдкрддреНрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдИрдЯрд╡рд╕рд╛рдЗрдЯреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред

static int EatWhitespace (FILE * InFile) /* ----------------------------------------------------------------------- ** * Scan past whitespace (see ctype(3C)) and return the first non-whitespace * character, or newline, or EOF. * * Input: InFile - Input source. * * Output: The next non-whitespace character in the input stream. * * Notes: Because the config files use a line-oriented grammar, we * explicitly exclude the newline character from the list of * whitespace characters. * - Note that both EOF (-1) and the nul character ('\0') are * considered end-of-file markers. * * ----------------------------------------------------------------------- ** */ { int c; for (c = getc (InFile); isspace (c) && ('\n' != c); c = getc (InFile)) ; return (c); } /* EatWhitespace */ 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, EatWhitespace рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рд▓реЗрддреА рд╣реИ :)ред рдЕрдм рдХреБрдЫ рд╡рд┐рд╡рд░рдгред

Getc рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг:

 int getc ( FILE * stream ); 

рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдЯреНрд░реАрдо рдХреА рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдХреЗрддрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдг рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рд╕реВрдЪрдХ рдЕрдЧрд▓реЗ рд╡рд░реНрдг рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрдд рд╕реНрдЯреНрд░реАрдо рдкрд░ рдХреЙрд▓ рдХреЗ рд╕рдордп рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди EOF рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╕реНрдЯреНрд░реАрдо рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдХреЗрддрдХ рдХрд╛ рдЕрдВрдд рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдкрдарди рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдИрдУрдПрдл рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рджрд┐рдП рдЧрдП рд╕реНрдЯреНрд░реАрдо (рдлреЗрд░рд░) рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрдХреЗрддрдХ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдЖрдЗрд╕рд╕реНрдкреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╡рд░рдг:

 int isspace( int ch ); 

рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪрд░рд┐рддреНрд░ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдХреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рд╣реИред рдорд╛рдирдХ рд╕реНрдерд╛рди рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдг рд╕рдлреЗрдж рд╕реНрдерд╛рди рд╣реИрдВ:

  • рдЕрдВрддрд░рд┐рдХреНрд╖ (0x20, ``);
  • рдкреГрд╖реНрда рдкрд░рд┐рд╡рд░реНрддрди (0x0c, '\ f');
  • рд▓рд╛рдЗрди рдлреАрдб LF (0x0a, '\ n');
  • рдЧрд╛рдбрд╝реА рд╡рд╛рдкрд╕реА CR (0x0d, '\ r');
  • рдХреНрд╖реИрддрд┐рдЬ рдЯреИрдм (0x09, '\ t');
  • рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЯреИрдм (0x0b, '\ v')ред

рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдиреЙрдирдЬреЗрд░реЛ рд╡реИрд▓реНрдпреВ, рдЕрдЧрд░ рдХреИрд░реЗрдХреНрдЯрд░ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рд╣реИ, рддреЛ рд╢реВрдиреНрдпред

EatWhitespace рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЗрди рдлрд╝реАрдб '\ n' рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХреЛ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рдкрд░ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдХрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪрдирд╛ (EOF) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рдЕрдм, рдпрд╣ рд╕рдм рдЬрд╛рдирддреЗ рд╣реБрдП, рдПрдХ рдЧрд▓рддреА рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ!

рдкрд╛рдардХ рдХреЛ рдЧрд▓рддреА рд╕реЗ рдЙрддреНрддрд░ рдХреЛ рди рджреЗрдЦрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЧрдИ рдЬреЛрдбрд╝реА рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВред

рдЪрд┐рддреНрд░ 1. рдХрд┐рд╕реА рднреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордпред  рдпреВрдирд┐рдХреЙрд░реНрди рдХрд╛ рд╣реЛрдЧрд╛ рдЗрдВрддрдЬрд╛рд░


рдЪрд┐рддреНрд░ 1. рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордпред рдпреВрдирд┐рдХреЙрд░реНрди рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ?

рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд╛рдардХреЛрдВ рдХреЛ рдЖрдЗрд╕реНрдкреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдзреЛрдЦрд╛ рджрд┐рдпрд╛ред рд╣рд╛-рд╣рд╛! рдпрд╣ рдПрдХ рдорд╛рдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдШрд░ рдХрд╛ рдмрдирд╛ рдореИрдХреНрд░реЛ рд╣реИред рд╣рд╛рдБ, рд╣рдо рдирд┐рд░реНрджреЛрд╖ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЪрд┐рддреНрд░ 2. рдПрдХ рдЧреЗрдВрдбрд╛ рд▓реЗрдЦ рдХреЛ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЭреВрдард╛ рдЖрднрд╛рд╕ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдбреНрд╕ рдХреНрдпрд╛ рд╣реИред


рдЪрд┐рддреНрд░ 2. рдПрдХ рдЧреЗрдВрдбрд╛ рдкрд╛рдардХреЛрдВ рдХреЛ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЭреВрдард╛ рдЖрднрд╛рд╕ рдХрд░рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрд╕реНрдкреЗрд╕ рдХреНрдпрд╛ рд╣реИ ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдФрд░ рд╣рдорд╛рд░реЗ рдЧреЗрдВрдбрд╛ рдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИред GNU рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ charset.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдирд╛ рдЖрдЗрд╕рд╕реНрдкреЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдХрд░ рднреНрд░рдо рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛:

 #ifdef isspace #undef isspace #endif .... #define isspace(c) ((c)==' ' || (c) == '\t') 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдореИрдХреНрд░реЛ рдХреЛ рдмрдирд╛рдХрд░, рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ред рдХреЛрдб рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдЗрд╕рд╕реНрдкреЗрд╕ рдПрдХ рдорд╛рдирдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХреИрд░рд┐рдЬ рд░рд┐рдЯрд░реНрди (0x0d, '\ r') рдХреЛ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рд╡рд░реНрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рдирддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдореИрдХреНрд░реЛ рдХреЗрд╡рд▓ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рдЯреИрдм рдХреЛ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рд╡рд░реНрдг рдорд╛рдирддрд╛ рд╣реИред рдЖрдЗрдП рдореИрдХреНрд░реЛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

 for (c = getc (InFile); ((c)==' ' || (c) == '\t') && ('\n' != c); c = getc (InFile)) 

рдЙрдкрдкреНрд░рдХрд╛рд░ ('\ n'! = C) рдирд┐рд░рд░реНрдердХ (рдирд┐рд░рд░реНрдердХ) рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрдЧрд╛ред PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреЗ рд╣реБрдП рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИ:

V560 рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ: ('\ n'! = C)ред params.c 136ред

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП 3 рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:

  • рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрдд рдкрд╣реБрдБрдЪ рдЧрдпрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрдд (рдИрдУрдПрдл) рдПрдХ рд╕реНрдерд╛рди рдпрд╛ рдЯреИрдм рдирд╣реАрдВ рд╣реИред рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рдХрд╛рд░рдг рдЙрдк-рд╕рдВрдкреАрдбрд╝рди ('\ n'! = C) рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЪрдХреНрд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред
  • рдХреЛрдИ рднреА рд╡рд░реНрдг рдЬреЛ рд╕реНрдкреЗрд╕ рдпрд╛ рдЯреИрдм рдирд╣реАрдВ рд╣реИ, рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рдХрд╛рд░рдг рдЙрдк-рд╕рдВрдкреАрдбрд╝рди ('\ n'! = C) рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЪрдХреНрд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред
  • рдПрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЪрд░рд┐рддреНрд░ рдпрд╛ рдХреНрд╖реИрддрд┐рдЬ рдЯреИрдм рдкрдврд╝реЗрдВред рдЙрдкрдкреНрд░рд╛рдгрддрд╛ ('\ n'! = C) рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд░рд╣реЗрдЧрд╛ред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдЗрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:

 for (c = getc (InFile); c==' ' || c == '\t'; c = getc (InFile)) 

рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдХреЛрдб рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдЕрдм рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд┐рд╕рдиреЗ рдИрдЯрд╡реНрд╣реАрдЯреНрд╕рд╕реНрдкреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЖрдЗрд╕рд╕реНрдкреЗрд╕ рдХреЙрд▓ рд▓рд┐рдЦрд╛ рдерд╛, рдЙрд╕реЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдПрдХ рдорд╛рдирдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реАрд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рд╢рд░реНрдд рдЬреЛрдбрд╝реА рдХрд┐ рд▓рд╛рдЗрди рдПрд▓рдПрдл ('\ n') рдХреЛ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдЪрд░рд┐рддреНрд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рдЯреИрдм рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреГрд╖реНрда рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЯреИрдм рдЬреИрд╕реЗ рд╡рд░реНрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдпрд╣ рд╕реАрдЖрд░ рдХреИрд░рд┐рдЬ рд░рд┐рдЯрд░реНрди рдЪрд░рд┐рддреНрд░ (0x0d, '\ r') рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рднреА рдереАред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдпрд╣ рдкреНрд░рддреАрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЪрдХреНрд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХ Microsoft рд╡рд┐рдВрдбреЛрдЬ рдЬреИрд╕реЗ рдХреБрдЫ рдЧреИрд░-рдпреВрдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕реАрдЖрд░ + рдПрд▓рдПрдл рдЕрдиреБрдХреНрд░рдо рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд▓рд╛рдЗрди рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрд▓рдПрдл рдпрд╛ рд╕реАрдЖрд░ + рдПрд▓рдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ " рд▓рд╛рдЗрди рдлреАрдб " рд╣реИред

EatWhitespace рдлрд╝рдВрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдЬрд╣рд╛рдВ LF рдФрд░ CR + LF рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реАрдЖрд░ + рдПрд▓рдПрдл рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЖрдИ рд╣реИ, рддреЛ рдЖрдк рднрд╛рдЧреНрдп рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ :)ред

рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЬреАрдПрдирдпреВ рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ рдпреВрдирд┐рдХреНрд╕-рдЬреИрд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЖрдо рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рд▓рд╛рдЗрди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрдл рдЪрд░рд┐рддреНрд░ (0x0a, '\ n') рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕реА trifles рдХреЗ рдХрд╛рд░рдг, рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдЕрд╕рдВрдЧрддрд┐ рдХреА рд╡рд┐рднрд┐рдиреНрди рдХрд╖реНрдЯрдкреНрд░рдж рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВред

рд╡рд░реНрдгрд┐рдд рддреНрд░реБрдЯрд┐ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореИрдХреНрд░реЛ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рднреВрд▓рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреВрд░рдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рдЕрдиреНрдп рддреНрд░реБрдЯрд┐-рдЦреЛрдЬ рддрдХрдиреАрдХ рд╣реИред

рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдмреБрд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред рд╡реИрд╕реЗ, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓реЗрдЦ " рд▓рд╡ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ " рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдорд╛рдорд▓реЗ рдХреЛ рдореИрдХреНрд░реЛ #define рд╕реНрдкреНрд░рд┐рдВрдЯрдл рдПрд╕рдЯреАрдбреА :: рдкреНрд░рд┐рдВрдЯрдл рдХреЗ рд╕рд╛рде рдорд╛рдирд╛ рдЧрдпрд╛ рдерд╛ред

рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдореИрдХреНрд░реЛ рдХреЛ рдПрдХ рдЕрдиреВрдард╛ рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, is_space_or_tab ред рдлрд┐рд░ рднреНрд░рдо рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рд╢рд╛рдпрдж рдореИрдХреНрд░реЛ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдорд╛рдирдХ рдЖрдЗрд╕рд╕реНрдкреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдзреАрдорд╛ рд╕рдВрдЪрд╛рд▓рди рдерд╛ , рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдПрдХ рддреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдпрд╣ рдирд┐рд░реНрдгрдп рдЧрд▓рдд рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ isspace рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХреЛрдб рд╡рд╛рд▓рд╛ рдХреЛрдб рдорд┐рд▓реЗред рдФрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рдХреЗ рд╕рд╛рде рдореИрдХреНрд░реЛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИред



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдВрдбреНрд░реЗ рдХрд╛рд░рдкреЛрд╡ред рдПрдХ рдЬрд╛рд╕реВрд╕ рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрдзреА рд░рд╛рдд рдХреЗ рдХрдорд╛рдВрдбрд░ рд╕реЗ рдПрдХ рдлрдВрдХреНрд╢рди рдореЗрдВ рдмрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ ред

Source: https://habr.com/ru/post/hi439374/


All Articles