āļāļēāļĢāđƒāļŠāđ‰ Standard Input āđƒāļ™āļ āļēāļĐāļē C: āļ„āļđāđˆāļĄāļ·āļ­āļžāļ·āđ‰āļ™āļāļēāļ™āļ–āļķāļ‡āļ‚āļąāđ‰āļ™āļŠāļđāļ‡āļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™

į›ŪæŽĄ

1. āļšāļ—āļ™āļģ

āđƒāļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ āļēāļĐāļē C āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ â€œStandard Input” āļ–āļ·āļ­āđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļŠāļģāļ„āļąāļāļ—āļĩāđˆāļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āđ„āļĄāđˆāđ„āļ”āđ‰ āļāļēāļĢāđ€āļ‚āđ‰āļēāđƒāļˆāđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ Standard Input āļ­āļĒāđˆāļēāļ‡āļ–āļđāļāļ•āđ‰āļ­āļ‡āđāļĨāļ°āļ›āļĨāļ­āļ”āļ āļąāļĒ āļˆāļ°āļŠāđˆāļ§āļĒāđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āđāļĨāļ°āļ„āļ§āļēāļĄāļ™āđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļēāļ

āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļˆāļ°āļ­āļ˜āļīāļšāļēāļĒāđ€āļŠāļīāļ‡āļĢāļ°āļšāļšāļ•āļąāđ‰āļ‡āđāļ•āđˆāļžāļ·āđ‰āļ™āļāļēāļ™āļˆāļ™āļ–āļķāļ‡āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰ Standard Input āđƒāļ™āļ āļēāļĐāļē C āļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ” āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļœāļđāđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāđ„āļ”āđ‰āļ‡āđˆāļēāļĒ āđāļĨāļ°āļ™āļģāđ„āļ›āđƒāļŠāđ‰āļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡

āļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡ Standard Input

Standard Input āļ„āļ·āļ­āļāļĨāđ„āļāļžāļ·āđ‰āļ™āļāļēāļ™āļ—āļĩāđˆāđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ āļēāļĒāļ™āļ­āļ āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļŠāđˆāļ™ āđƒāļŠāđ‰āđƒāļ™āļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒāļ”āļąāļ‡āļ™āļĩāđ‰:

  • āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ„āļģāļ™āļ§āļ“āļ—āļĩāđˆāđƒāļŠāđ‰āļ„āđˆāļēāļ•āļąāļ§āđ€āļĨāļ‚āļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļ›āđ‰āļ­āļ™
  • āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ„āđ‰āļ™āļŦāļēāļ—āļĩāđˆāđƒāļŠāđ‰āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ
  • āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļ—āļģāļ‡āļēāļ™āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļāļ•āļēāļĄāļ„āļģāļŠāļąāđˆāļ‡āļˆāļēāļ Command Line

āđƒāļ™āļāļĢāļ“āļĩāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰ āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Standard Input āļ­āļĒāđˆāļēāļ‡āļ–āļđāļāļ•āđ‰āļ­āļ‡ āļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āļ›āļĨāļ­āļ”āļ āļąāļĒāļĄāļēāļāļ‚āļķāđ‰āļ™

āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļˆāļ°āđ„āļ”āđ‰āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļˆāļēāļāļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰

āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļˆāļ°āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ”āļąāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰:

  1. āļāļĨāđ„āļāļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡ Standard Input āđāļĨāļ°āļ§āļīāļ˜āļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļ™āļ āļēāļĐāļē C
  2. āļāļēāļĢāđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ scanf āđāļĨāļ° fgets
  3. āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ Standard Input āļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļ™āđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­
  4. āđ€āļ—āļ„āļ™āļīāļ„āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļąāđ‰āļ™āļŠāļđāļ‡
  5. āļ›āļąāļāļŦāļēāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāđāļĨāļ°āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚

āļœāļđāđ‰āļ­āđˆāļēāļ™āđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒ

  • āļœāļđāđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ—āļĩāđˆāļāļģāļĨāļąāļ‡āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ āļēāļĐāļē C
  • āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļĄāļ­āļĢāđŒāļ—āļĩāđˆāļĒāļąāļ‡āđ„āļĄāđˆāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰ Standard Input
  • āļœāļđāđ‰āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļŦāđ‰āļĄāļĩāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

2. Standard Input āļ„āļ·āļ­āļ­āļ°āđ„āļĢ

āđƒāļ™āļ āļēāļĐāļē C, Standard Input āļ„āļ·āļ­āļāļĨāđ„āļāļžāļ·āđ‰āļ™āļāļēāļ™āļ—āļĩāđˆāđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ āļēāļĒāļ™āļ­āļ āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļŦāļ™āļķāđˆāļ‡āļ‚āļ­āļ‡ â€œStandard I/O” āđ‚āļ”āļĒāļ›āļāļ•āļīāļˆāļ°āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļœāđˆāļēāļ™ Terminal āļŦāļĢāļ·āļ­ Command Line āļŠāđˆāļ§āļ™āļ™āļĩāđ‰āļˆāļ°āļ­āļ˜āļīāļšāļēāļĒāđāļ™āļ§āļ„āļīāļ”āđāļĨāļ°āļšāļ—āļšāļēāļ—āļ‚āļ­āļ‡ Standard Input

āļ„āļģāļˆāļģāļāļąāļ”āļ„āļ§āļēāļĄāļ‚āļ­āļ‡ Standard Input

Standard Input (stdin) āļ„āļ·āļ­ Data Stream āļ—āļĩāđˆāđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ āļēāļĒāļ™āļ­āļ āđƒāļ™āļ āļēāļĐāļē C āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢāđ„āļ”āđ‰āļ‡āđˆāļēāļĒāļœāđˆāļēāļ™āđ„āļĨāļšāļĢāļēāļĢāļĩ stdio.h

  • āđ‚āļ”āļĒāļ—āļąāđˆāļ§āđ„āļ› āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļ°āļ–āļđāļāļ›āđ‰āļ­āļ™āļˆāļēāļāđāļ›āđ‰āļ™āļžāļīāļĄāļžāđŒ
  • āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĢāļąāļšāđ€āļ‚āđ‰āļēāļĄāļēāļˆāļ°āļ–āļđāļāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđƒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ āđāļĨāļ°āļŠāđˆāļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒāļ­āļ­āļāđ„āļ›āļĒāļąāļ‡ Standard Output

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ Standard I/O

āđƒāļ™āļ āļēāļĐāļē C āļˆāļ°āļĄāļĩ Standard Stream 3 āļ›āļĢāļ°āđ€āļ āļ—āļŦāļĨāļąāļāļ”āļąāļ‡āļ™āļĩāđ‰:

  1. Standard Input (stdin): āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ āļēāļĒāļ™āļ­āļ
  2. Standard Output (stdout): āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāđāļŠāļ”āļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒāļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄ
  3. Standard Error Output (stderr): āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ Error

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļˆāļĢāļīāļ‡

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļ‡āđˆāļēāļĒāđ† āļ—āļĩāđˆāļĢāļąāļšāļ„āđˆāļēāļ•āļąāļ§āđ€āļĨāļ‚āļˆāļēāļ Standard Input āđāļĨāļ°āđāļŠāļ”āļ‡āļœāļĨāļ—āļēāļ‡ Standard Output

#include <stdio.h>

int main() {
    int number;
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ•āļąāļ§āđ€āļĨāļ‚: ");
    scanf("%d", &number); // āļ­āđˆāļēāļ™āļ„āđˆāļēāļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāļˆāļēāļ Standard Input
    printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %d\n", number); // āđāļŠāļ”āļ‡āļœāļĨāļ­āļ­āļāļ—āļēāļ‡ Standard Output
    return 0;
}

āļšāļ—āļšāļēāļ—āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡ Standard Input

Standard Input āļ–āļđāļāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļĨāļąāļāļĐāļ“āļ°āļ•āđˆāļēāļ‡āđ† āđ€āļŠāđˆāļ™:

  • āđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨ: āļ›āđ‰āļ­āļ™āļ•āļąāļ§āđ€āļĨāļ‚āļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ€āļžāļ·āđˆāļ­āļ™āļģāđ„āļ›āļ„āļģāļ™āļ§āļ“āļŦāļĢāļ·āļ­āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒ
  • āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđāļšāļš Interactive: āļĢāļąāļšāļ„āļģāļŠāļąāđˆāļ‡āļˆāļēāļāļœāļđāđ‰āđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄ
  • āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ: āđƒāļŠāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļ›āđ‰āļ­āļ™āđ€āļžāļ·āđˆāļ­āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđāļšāļš Real-time

āļ‚āđ‰āļ­āļ”āļĩāļ‚āļ­āļ‡ Standard Input

  • āļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™: āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđāļ›āđ‰āļ™āļžāļīāļĄāļžāđŒ, Pipe āļŦāļĢāļ·āļ­ Redirection
  • āļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļ: āđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđƒāļ™āļ•āļąāļ§āđ€āļŠāđˆāļ™ scanf āđāļĨāļ° fgets āđ€āļžāļ·āđˆāļ­āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰āļ‡āđˆāļēāļĒ

3. āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāđƒāļŠāđ‰ Standard Input āđƒāļ™āļ āļēāļĐāļē C

āļ āļēāļĐāļē C āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļŦāļĨāļēāļĒāļ•āļąāļ§āļ—āļĩāđˆāđƒāļŠāđ‰āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļœāļđāđ‰āđƒāļŠāđ‰āļœāđˆāļēāļ™ Standard Input āļ—āļĩāđˆāđƒāļŠāđ‰āļšāđˆāļ­āļĒāļ—āļĩāđˆāļŠāļļāļ”āļ„āļ·āļ­ scanf āđāļĨāļ° fgets āļŠāđˆāļ§āļ™āļ™āļĩāđ‰āļˆāļ°āđāļ™āļ°āļ™āļģāļ§āļīāļ˜āļĩāđƒāļŠāđ‰āļ‡āļēāļ™āđāļĨāļ°āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āđāļ•āđˆāļĨāļ°āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡

āļāļēāļĢāđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ scanf

scanf āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ•āļēāļĄ Format āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđāļĨāļ°āđ€āļāđ‡āļšāđ„āļ§āđ‰āđƒāļ™āļ•āļąāļ§āđāļ›āļĢ

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™

int scanf(const char *format, ...);
  • format: String āļ—āļĩāđˆāļĢāļ°āļšāļļāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ
  • ...: Address āļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāđ€āļāđ‡āļšāļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ€āļ‚āđ‰āļēāļĄāļē

Specifier āļ—āļĩāđˆāđƒāļŠāđ‰āļšāđˆāļ­āļĒ

Specifierāļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡
%dāļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ (Integer)42
%fāļˆāļģāļ™āļ§āļ™āļ—āļĻāļ™āļīāļĒāļĄ (Float)3.14
%cāļ­āļąāļāļ‚āļĢāļ° 1 āļ•āļąāļ§A
%sāļŠāļ•āļĢāļīāļ‡ (String)Hello

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™

#include <stdio.h>

int main() {
    int age;
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ­āļēāļĒāļļ: ");
    scanf("%d", &age); // āļ­āđˆāļēāļ™āļ„āđˆāļēāļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ
    printf("āļ­āļēāļĒāļļāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %d\n", age);
    return 0;
}

āļ‚āđ‰āļ­āļ„āļ§āļĢāļĢāļ°āļ§āļąāļ‡

  • āļŦāļēāļāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļĄāļēāđ„āļĄāđˆāļ•āļĢāļ‡āļāļąāļš Format āļˆāļ°āđ€āļāļīāļ” Error
  • āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™ Buffer Overflow āļ„āļ§āļĢāļāļģāļŦāļ™āļ”āļ‚āļ™āļēāļ”āļāļēāļĢāļ­āđˆāļēāļ™ āđ€āļŠāđˆāļ™ %s

āļāļēāļĢāđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ fgets

fgets āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļ­āđˆāļēāļ™ String āđāļšāļšāļ—āļĩāļĨāļ°āļšāļĢāļĢāļ—āļąāļ” āđāļĨāļ°āļ–āļ·āļ­āļ§āđˆāļēāļ›āļĨāļ­āļ”āļ āļąāļĒāļāļ§āđˆāļē scanf

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™

char *fgets(char *str, int n, FILE *stream);
  • str: Array āļ—āļĩāđˆāđƒāļŠāđ‰āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ­āđˆāļēāļ™āļĄāļē
  • n: āļˆāļģāļ™āļ§āļ™āļ­āļąāļāļ‚āļĢāļ°āļŠāļđāļ‡āļŠāļļāļ”āļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰ (āļĢāļ§āļĄ ‘\0’)
  • stream: āđāļŦāļĨāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (āļ›āļāļ•āļīāļ„āļ·āļ­ stdin)

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™

#include <stdio.h>

int main() {
    char name[50];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgets(name, 50, stdin); // āļ­āđˆāļēāļ™āđ„āļ”āđ‰āļŠāļđāļ‡āļŠāļļāļ” 49 āļ•āļąāļ§āļ­āļąāļāļĐāļĢ
    printf("āļŠāļ·āđˆāļ­āļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %s", name);
    return 0;
}

āļ‚āđ‰āļ­āļ„āļ§āļĢāļĢāļ°āļ§āļąāļ‡

  • āļ–āđ‰āļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļĒāļēāļ§āđ€āļāļīāļ™ Buffer āļŠāđˆāļ§āļ™āļ—āļĩāđˆāđ€āļāļīāļ™āļˆāļ°āļ–āļđāļāļ•āļąāļ”āļ—āļīāđ‰āļ‡
  • āļ­āļēāļˆāļĄāļĩāļ­āļąāļāļ‚āļĢāļ° ‘\n’ āļ­āļĒāļđāđˆāđƒāļ™ String āļ•āđ‰āļ­āļ‡āļĨāļšāļ­āļ­āļāđ€āļ­āļ‡

āļ§āļīāļ˜āļĩāļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ

name[strcspn(name, "\n")] = '\0';

āļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļĢāļ°āļŦāļ§āđˆāļēāļ‡ scanf āđāļĨāļ° fgets

āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīscanffgets
āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ­āđˆāļēāļ™āļ„āđˆāļēāļ•āļēāļĄāļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļāļģāļŦāļ™āļ” (āļ•āļąāļ§āđ€āļĨāļ‚/āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ)āļ­āđˆāļēāļ™ String āļ—āļĩāļĨāļ°āļšāļĢāļĢāļ—āļąāļ”
āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļĄāļĩāļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ‡ Buffer Overflowāļ„āļ§āļšāļ„āļļāļĄāļ‚āļ™āļēāļ” Buffer āđ„āļ”āđ‰
āļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ” Format āđ„āļ”āđ‰āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđ€āļ›āđ‡āļ™ String

āļ„āļ§āļĢāđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰āđāļšāļšāđƒāļ”?

  • āđƒāļŠāđ‰ scanf: āđ€āļĄāļ·āđˆāļ­āļ­āļĒāļēāļāđ„āļ”āđ‰āļ„āđˆāļēāļ•āļąāļ§āđ€āļĨāļ‚āļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĄāļĩāļĢāļđāļ›āđāļšāļšāđ€āļ‰āļžāļēāļ°
  • āđƒāļŠāđ‰ fgets: āđ€āļĄāļ·āđˆāļ­āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ String āļ—āļĩāđˆāļĒāļēāļ§āļŦāļĢāļ·āļ­āļ‹āļąāļšāļ‹āđ‰āļ­āļ™

4. āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ Standard Input āļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Standard Input āđƒāļ™āļ āļēāļĐāļē C āļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒāđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļŠāļģāļ„āļąāļāļĄāļēāļ āđ€āļžāļĢāļēāļ°āļāļēāļĢāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ­āļēāļˆāļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ” Buffer Overflow āļŦāļĢāļ·āļ­ Undefined Behavior āđ„āļ”āđ‰ āļŠāđˆāļ§āļ™āļ™āļĩāđ‰āļˆāļ°āļ­āļ˜āļīāļšāļēāļĒāļ§āļīāļ˜āļĩāđ€āļ‚āļĩāļĒāļ™āļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒāļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡

āļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™ Buffer Overflow

scanf āđƒāļŠāđ‰āļ‡āđˆāļēāļĒ āđāļ•āđˆāļŦāļēāļāđ„āļĄāđˆāļˆāļģāļāļąāļ”āļ‚āļ™āļēāļ”āļāļēāļĢāļ›āđ‰āļ­āļ™ āļ­āļēāļˆāđ€āļāļīāļ” Buffer Overflow

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļˆāļģāļāļąāļ”āļ‚āļ™āļēāļ”

#include <stdio.h>

int main() {
    char input[10];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ (āļŠāļđāļ‡āļŠāļļāļ” 9 āļ•āļąāļ§āļ­āļąāļāļĐāļĢ): ");
    scanf("%9s", input); // āļˆāļģāļāļąāļ”āļŠāļđāļ‡āļŠāļļāļ” 9 āļ•āļąāļ§āļ­āļąāļāļĐāļĢ
    printf("āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %s\n", input);
    return 0;
}

āļ‚āđ‰āļ­āļŠāļģāļ„āļąāļ

  • āļāļģāļŦāļ™āļ”āļ‚āļ™āļēāļ”āđƒāļ™ Format āđ€āļŠāđˆāļ™ %9s āđ€āļžāļ·āđˆāļ­āđ„āļĄāđˆāđƒāļŦāđ‰āļ­āđˆāļēāļ™āđ€āļāļīāļ™āļ‚āļ™āļēāļ” Array

āđƒāļŠāđ‰ fgets āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

fgets āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āļˆāļģāļ™āļ§āļ™āļ­āļąāļāļ‚āļĢāļ°āļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰ āļˆāļķāļ‡āļŠāđˆāļ§āļĒāļĨāļ”āļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ‡āļˆāļēāļ Buffer Overflow āđ€āļŦāļĄāļēāļ°āļāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĒāļēāļ§āļŦāļĢāļ·āļ­ Input āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđƒāļŠāđ‰ fgets

#include <stdio.h>
#include <string.h>

int main() {
    char buffer[20];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ: ");
    fgets(buffer, sizeof(buffer), stdin); // āļ­āđˆāļēāļ™āđ„āļ”āđ‰āļŠāļđāļ‡āļŠāļļāļ” 19 āļ•āļąāļ§āļ­āļąāļāļĐāļĢ
    buffer[strcspn(buffer, "\n")] = '\0'; // āļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ
    printf("āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %s\n", buffer);
    return 0;
}

āļ‚āđ‰āļ­āļŠāļģāļ„āļąāļ

  • āđƒāļŠāđ‰ sizeof(buffer) āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļāļģāļŦāļ™āļ”āļ‚āļ™āļēāļ”āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
  • āđƒāļŠāđ‰ strcspn āđ€āļžāļ·āđˆāļ­āļĨāļš ‘\n’

āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļē

āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ āļ„āļ§āļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļ›āđ‰āļ­āļ™āđ€āļ‚āđ‰āļēāļĄāļē āđ€āļŠāđˆāļ™ āļ–āđ‰āļēāļ„āļēāļ”āļŦāļ§āļąāļ‡āđƒāļŦāđ‰āļ›āđ‰āļ­āļ™āļ•āļąāļ§āđ€āļĨāļ‚ āļāđ‡āļ„āļ§āļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāđˆāļ­āļ™āļ™āļģāđ„āļ›āđƒāļŠāđ‰āļ‡āļēāļ™

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āđˆāļēāļ•āļąāļ§āđ€āļĨāļ‚

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main() {
    char buffer[20];
    long number;
    char *endptr;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ: ");
    fgets(buffer, sizeof(buffer), stdin);

    errno = 0; // āļĢāļĩāđ€āļ‹āđ‡āļ•āļŠāļ–āļēāļ™āļ° Error
    number = strtol(buffer, &endptr, 10); // āđāļ›āļĨāļ‡ String āđ€āļ›āđ‡āļ™ Integer

    if (errno != 0 || endptr == buffer || *endptr != '\0') {
        printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡\n");
    } else {
        printf("āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %ld\n", number);
    }

    return 0;
}

āļ‚āđ‰āļ­āļŠāļģāļ„āļąāļ

  • strtol āļŠāđˆāļ§āļĒāļ•āļĢāļ§āļˆāļˆāļąāļš Error āļ‚āļ“āļ°āļ—āļģāļāļēāļĢāđāļ›āļĨāļ‡
  • āļāļēāļĢāđƒāļŠāđ‰ errno āđāļĨāļ° endptr āļ—āļģāđƒāļŦāđ‰āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ„āļ”āđ‰āļ§āđˆāļēāļœāļĨāļĨāļąāļžāļ˜āđŒāļ–āļđāļāļ•āđ‰āļ­āļ‡āļŦāļĢāļ·āļ­āđ„āļĄāđˆ

āđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Error

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Error āļˆāļēāļ Input āļ­āļĒāđˆāļēāļ‡āđ€āļŦāļĄāļēāļ°āļŠāļĄāļ„āļ·āļ­āļāļļāļāđāļˆāļŠāļģāļ„āļąāļāđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš Error

#include <stdio.h>

int main() {
    int value;
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ: ");

    if (scanf("%d", &value) != 1) { // āļ–āđ‰āļēāļ­āđˆāļēāļ™āđ„āļĄāđˆāļŠāļģāđ€āļĢāđ‡āļˆ
        printf("āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡\n");
        return 1; // āļˆāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļžāļĢāđ‰āļ­āļĄ Error
    }

    printf("āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %d\n", value);
    return 0;
}

āļ‚āđ‰āļ­āļŠāļģāļ„āļąāļ

  • āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āđˆāļēāļ—āļĩāđˆ scanf āļ„āļ·āļ™āļĄāļē āļ–āđ‰āļēāđ„āļĄāđˆāļ•āļĢāļ‡āļ•āļēāļĄāļ—āļĩāđˆāļ„āļēāļ” āļ•āđ‰āļ­āļ‡āļ—āļģ Error Handling

āļŠāļĢāļļāļ›āļ§āļīāļ˜āļĩāļāļēāļĢāļĢāļąāļš Input āļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ

  • āđƒāļŠāđ‰ scanf āļžāļĢāđ‰āļ­āļĄāļĢāļ°āļšāļļāļ‚āļ™āļēāļ”āļ—āļĩāđˆāļˆāļģāļāļąāļ”
  • āđƒāļŠāđ‰ fgets āļŠāļģāļŦāļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĒāļēāļ§āļŦāļĢāļ·āļ­ Input āđāļšāļšāļ—āļĩāļĨāļ°āļšāļĢāļĢāļ—āļąāļ”
  • āļ­āļĒāđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­ Input āļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰ āļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ Error āđ€āļŠāļĄāļ­

5. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ Standard Input āļ‚āļąāđ‰āļ™āļŠāļđāļ‡

āļŦāļĨāļąāļ‡āļˆāļēāļāđ€āļ‚āđ‰āļēāđƒāļˆāļžāļ·āđ‰āļ™āļāļēāļ™āđāļĨāđ‰āļ§ āļŠāļēāļĄāļēāļĢāļ–āļ•āđˆāļ­āļĒāļ­āļ”āđ„āļ›āļĒāļąāļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āļąāđ‰āļ™āļŠāļđāļ‡ āđ€āļžāļ·āđˆāļ­āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‚āļķāđ‰āļ™ āđ€āļŠāđˆāļ™ āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļēāļĒāļ„āđˆāļē āļŦāļĢāļ·āļ­āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āđāļĨāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ

āļāļēāļĢāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļēāļĒāļ„āđˆāļēāļžāļĢāđ‰āļ­āļĄāļāļąāļ™

āļšāđˆāļ­āļĒāļ„āļĢāļąāđ‰āļ‡āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļēāļĒāļ„āđˆāļēāđƒāļ™āļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§ āđ€āļŠāđˆāļ™ āļ•āļąāļ§āđ€āļĨāļ‚āļŦāļĨāļēāļĒāļ•āļąāļ§āļ—āļĩāđˆāļ„āļąāđˆāļ™āļ”āđ‰āļ§āļĒāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļŦāļĢāļ·āļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒāļˆāļļāļĨāļ āļēāļ„

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡: āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ„āļąāđˆāļ™āļ”āđ‰āļ§āļĒāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡

#include <stdio.h>

int main() {
    int numbers[5];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ 5 āļ„āđˆāļē (āļ„āļąāđˆāļ™āļ”āđ‰āļ§āļĒāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡): ");
    for (int i = 0; i < 5; i++) {
        scanf("%d", &numbers[i]);
    }

    printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: ");
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");

    return 0;
}

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡: āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ„āļąāđˆāļ™āļ”āđ‰āļ§āļĒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒāļˆāļļāļĨāļ āļēāļ„

#include <stdio.h>

int main() {
    int numbers[3];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ 3 āļ„āđˆāļē (āļ„āļąāđˆāļ™āļ”āđ‰āļ§āļĒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒāļˆāļļāļĨāļ āļēāļ„): ");
    scanf("%d,%d,%d", &numbers[0], &numbers[1], &numbers[2]);

    printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %d, %d, %d\n", numbers[0], numbers[1], numbers[2]);
    return 0;
}

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Input āļ—āļĩāđˆāļĄāļĩāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļŦāļĢāļ·āļ­āļāļēāļĢāļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ

āļšāļēāļ‡āļ„āļĢāļąāđ‰āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāļĄāļĩāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļŦāļĢāļ·āļ­āļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ āļ‹āļķāđˆāļ‡āļ•āđ‰āļ­āļ‡āļˆāļąāļ”āļāļēāļĢāļ­āļĒāđˆāļēāļ‡āđ€āļŦāļĄāļēāļ°āļŠāļĄ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡: āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ

āđƒāļŠāđ‰ fgets āđ€āļžāļ·āđˆāļ­āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļąāđ‰āļ‡āļšāļĢāļĢāļ—āļąāļ” āđāļĨāđ‰āļ§āļĨāļšāļ­āļąāļāļ‚āļĢāļ° ‘\n’

#include <stdio.h>
#include <string.h>

int main() {
    char input[100];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ: ");
    fgets(input, sizeof(input), stdin);

    input[strcspn(input, "\n")] = '\0'; // āļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ
    printf("āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %s\n", input);

    return 0;
}

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Input āļŦāļĨāļēāļĒāļšāļĢāļĢāļ—āļąāļ”

āđ‚āļ›āļĢāđāļāļĢāļĄāļšāļēāļ‡āļ›āļĢāļ°āđ€āļ āļ—āļ•āđ‰āļ­āļ‡āļāļēāļĢāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāļĨāļ°āļŦāļĨāļēāļĒāļšāļĢāļĢāļ—āļąāļ” āđ€āļŠāđˆāļ™ āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŦāļĢāļ·āļ­āļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ‚āđ‰āļ­āļĄāļđāļĨ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡: āļāļēāļĢāļ­āđˆāļēāļ™āļŦāļĨāļēāļĒāļšāļĢāļĢāļ—āļąāļ”āļ‹āđ‰āļģāđ†

#include <stdio.h>

int main() {
    char line[100];

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŦāļĨāļēāļĒāļšāļĢāļĢāļ—āļąāļ” (āļāļ” Ctrl+D āđ€āļžāļ·āđˆāļ­āļŠāļīāđ‰āļ™āļŠāļļāļ”):\n");
    while (fgets(line, sizeof(line), stdin) != NULL) {
        printf("āļšāļĢāļĢāļ—āļąāļ”āļ—āļĩāđˆāļ›āđ‰āļ­āļ™: %s", line);
    }

    return 0;
}

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Input āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ

āđƒāļ™āļšāļēāļ‡āļāļĢāļ“āļĩ āđ„āļĄāđˆāļ—āļĢāļēāļšāļˆāļģāļ™āļ§āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļĨāđˆāļ§āļ‡āļŦāļ™āđ‰āļē āļˆāļķāļ‡āļ•āđ‰āļ­āļ‡āļˆāļąāļ”āļāļēāļĢāđāļšāļšāļ§āļ™āļĨāļđāļ›āļĢāļąāļšāļ„āđˆāļēāđ„āļ›āđ€āļĢāļ·āđˆāļ­āļĒāđ†

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡: āļāļēāļĢāļšāļ§āļāļĢāļ§āļĄāļ•āļąāļ§āđ€āļĨāļ‚āļ—āļĩāđˆāđ„āļĄāđˆāļ—āļĢāļēāļšāļˆāļģāļ™āļ§āļ™

#include <stdio.h>

int main() {
    int number, sum = 0;
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ (āļāļ” Ctrl+D āđ€āļžāļ·āđˆāļ­āļŠāļīāđ‰āļ™āļŠāļļāļ”):\n");

    while (scanf("%d", &number) == 1) {
        sum += number;
    }

    printf("āļœāļĨāļĢāļ§āļĄāļ‚āļ­āļ‡āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %d\n", sum);
    return 0;
}

āļŠāļĢāļļāļ›

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Input āđāļšāļšāļ‚āļąāđ‰āļ™āļŠāļđāļ‡āļ—āļģāđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļ–āļĢāļ­āļ‡āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‚āļķāđ‰āļ™ āđ€āļŠāđˆāļ™ āļŦāļĨāļēāļĒāļ„āđˆāļē āļŦāļĨāļēāļĒāļšāļĢāļĢāļ—āļąāļ” āļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ„āļ”āđ‰āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ āļāļēāļĢāļāļķāļāđƒāļŠāđ‰āđ€āļ—āļ„āļ™āļīāļ„āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āļˆāļ°āļŠāđˆāļ§āļĒāđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄ

6. āļ›āļąāļāļŦāļēāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāđāļĨāļ°āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚

āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰ Standard Input āđƒāļ™āļ āļēāļĐāļē C āļœāļđāđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļĄāļąāļāđ€āļˆāļ­āļ›āļąāļāļŦāļēāļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡ āļŠāđˆāļ§āļ™āļ™āļĩāđ‰āļˆāļ°āļŠāļĢāļļāļ›āļ›āļąāļāļŦāļēāļ—āļąāđˆāļ§āđ„āļ›āđāļĨāļ°āļ§āļīāļ˜āļĩāđāļāđ‰

āļ›āļąāļāļŦāļēāđāļĨāļ°āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚āļ‚āļ­āļ‡ scanf

āļ›āļąāļāļŦāļē 1: āļāļēāļĢāļ‚āđ‰āļēāļĄ Input

āļšāļēāļ‡āļ„āļĢāļąāđ‰āļ‡ scanf āļ­āđˆāļēāļ™āļ„āđˆāļēāļ•āļąāļ§āđ€āļĨāļ‚āđāļĨāđ‰āļ§āļ—āļīāđ‰āļ‡āļ­āļąāļāļ‚āļĢāļ° ‘\n’ āđ„āļ§āđ‰ āļ—āļģāđƒāļŦāđ‰āļāļēāļĢāļ­āđˆāļēāļ™āļ„āļĢāļąāđ‰āļ‡āļ•āđˆāļ­āđ„āļ›āļĄāļĩāļ›āļąāļāļŦāļē

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡
#include <stdio.h>

int main() {
    int number;
    char letter;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ: ");
    scanf("%d", &number);

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ­āļąāļāļĐāļĢ: ");
    scanf("%c", &letter); // āļˆāļ°āļ­āđˆāļēāļ™ '\n' āļ—āļĩāđˆāđ€āļŦāļĨāļ·āļ­āđāļ—āļ™

    printf("āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ: %d, āļ­āļąāļāļĐāļĢ: %c\n", number, letter);
    return 0;
}
āļ§āļīāļ˜āļĩāđāļāđ‰

āđƒāļŠāđˆāļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āļŦāļ™āđ‰āļē %c āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ‚āđ‰āļēāļĄ ‘\n’

scanf(" %c", &letter);

āļ›āļąāļāļŦāļē 2: Buffer Overflow

āļŦāļēāļāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĒāļēāļ§āđ€āļāļīāļ™ Buffer āđ‚āļ›āļĢāđāļāļĢāļĄāļ­āļēāļˆāļĨāđˆāļĄ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡
char input[10];
scanf("%s", input); // āļ›āđ‰āļ­āļ™āđ€āļāļīāļ™ 10 āļ•āļąāļ§āļˆāļ° Overflow
āļ§āļīāļ˜āļĩāđāļāđ‰

āļĢāļ°āļšāļļāļ‚āļ™āļēāļ”āļŠāļđāļ‡āļŠāļļāļ”

scanf("%9s", input);

āļŦāļĢāļ·āļ­āđƒāļŠāđ‰ fgets āđāļ—āļ™

āļ›āļąāļāļŦāļēāđāļĨāļ°āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚āļ‚āļ­āļ‡ fgets

āļ›āļąāļāļŦāļē 1: āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ

fgets āļˆāļ°āđ€āļāđ‡āļšāļ­āļąāļāļ‚āļĢāļ° ‘\n’ āđ„āļ§āđ‰āđƒāļ™ String āļ‹āļķāđˆāļ‡āļ­āļēāļˆāļ—āļģāđƒāļŦāđ‰āļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļŦāļĢāļ·āļ­āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļœāļīāļ”āļžāļĨāļēāļ”

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡
char input[20];
fgets(input, sizeof(input), stdin);
if (strcmp(input, "yes") == 0) {
    printf("Input āļ„āļ·āļ­ yes\n");
}

āļˆāļĢāļīāļ‡ āđ† āđāļĨāđ‰āļ§āļ„āđˆāļēāļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰āļ„āļ·āļ­ "yes\n" āļ—āļģāđƒāļŦāđ‰āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāđ„āļĄāđˆāļ•āļĢāļ‡

āļ§āļīāļ˜āļĩāđāļāđ‰

āļĨāļš ‘\n’ āļ—āļīāđ‰āļ‡

input[strcspn(input, "\n")] = '\0';

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Input āļ—āļĩāđˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡

āļ›āļąāļāļŦāļē 1: āļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļœāļīāļ”āļ›āļĢāļ°āđ€āļ āļ—

āđ€āļŠāđˆāļ™ āļ„āļēāļ”āļŦāļ§āļąāļ‡āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ āđāļ•āđˆāļœāļđāđ‰āđƒāļŠāđ‰āļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡
int number;
scanf("%d", &number); // āļ–āđ‰āļēāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļˆāļ° Error
āļ§āļīāļ˜āļĩāđāļāđ‰

āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡ Input āļāđˆāļ­āļ™

if (scanf("%d", &number) != 1) {
    printf("Input āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡\n");
    while (getchar() != '\n'); // āļĨāđ‰āļēāļ‡ Buffer
}

āļ›āļąāļāļŦāļēāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāļ­āđˆāļēāļ™āļŦāļĨāļēāļĒāļšāļĢāļĢāļ—āļąāļ”

āļ›āļąāļāļŦāļē: āđƒāļŠāđ‰ scanf āđāļĨāļ° fgets āļĢāđˆāļ§āļĄāļāļąāļ™

āļŦāļēāļāđƒāļŠāđ‰āļŠāļĨāļąāļšāļāļąāļ™ āļ­āļēāļˆāđ€āļāļīāļ”āļ›āļąāļāļŦāļēāđ€āļžāļĢāļēāļ° scanf āļˆāļ°āđ„āļĄāđˆāļ­āđˆāļēāļ™ ‘\n’ āļ—āļģāđƒāļŦāđ‰ fgets āļ­āđˆāļēāļ™ ‘\n’ āļ—āļĩāđˆāđ€āļŦāļĨāļ·āļ­āļ­āļĒāļđāđˆāđāļ—āļ™

āļŠāļēāđ€āļŦāļ•āļļ

āļŦāļĨāļąāļ‡āļˆāļēāļāđƒāļŠāđ‰ scanf āļˆāļ°āđ€āļŦāļĨāļ·āļ­āļ­āļąāļāļ‚āļĢāļ° ‘\n’ āļ­āļĒāļđāđˆāđƒāļ™ Buffer

āļ§āļīāļ˜āļĩāđāļāđ‰

āļĨāđ‰āļēāļ‡ Buffer āļŦāļĨāļąāļ‡āđƒāļŠāđ‰ scanf

while (getchar() != '\n');

āļŠāļĢāļļāļ›

āļāļēāļĢāđƒāļŠāđ‰ Standard Input āđƒāļ™āļ āļēāļĐāļē C āļĄāļĩāļ‚āđ‰āļ­āļ„āļ§āļĢāļĢāļ°āļ§āļąāļ‡āļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡ āđāļ•āđˆāļ–āđ‰āļēāđ€āļ‚āđ‰āļēāđƒāļˆāļ›āļąāļāļŦāļēāđāļĨāļ°āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚ āļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļ”āđ‰āļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļāļēāļĢāđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰ scanf āļŦāļĢāļ·āļ­ fgets āđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļāļąāļšāļ‡āļēāļ™


7. āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāđƒāļŠāđ‰ Standard Input

āļŠāđˆāļ§āļ™āļ™āļĩāđ‰āļˆāļ°āđāļŠāļ”āļ‡āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļĢāļīāļ‡āļ—āļĩāđˆāđƒāļŠāđ‰ Standard Input āļ•āļąāđ‰āļ‡āđāļ•āđˆāļžāļ·āđ‰āļ™āļāļēāļ™āđ„āļ›āļˆāļ™āļ–āļķāļ‡āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆ 1: āļ„āļģāļ™āļ§āļ“āļœāļĨāļĢāļ§āļĄāđāļĨāļ°āļ„āđˆāļēāđ€āļ‰āļĨāļĩāđˆāļĒ

āļ­āđˆāļēāļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāļŦāļĨāļēāļĒāļ„āđˆāļē āđāļĨāđ‰āļ§āļŦāļēāļœāļĨāļĢāļ§āļĄāđāļĨāļ°āļ„āđˆāļēāđ€āļ‰āļĨāļĩāđˆāļĒ

#include <stdio.h>

int main() {
    int numbers[100];
    int count = 0, sum = 0;
    float average;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāļŦāļĨāļēāļĒāļ„āđˆāļē (āļāļ” Ctrl+D āđ€āļžāļ·āđˆāļ­āļŠāļīāđ‰āļ™āļŠāļļāļ”):\n");

    while (scanf("%d", &numbers[count]) == 1) {
        sum += numbers[count];
        count++;
    }

    if (count > 0) {
        average = (float)sum / count;
        printf("āļœāļĨāļĢāļ§āļĄ: %d, āļ„āđˆāļēāđ€āļ‰āļĨāļĩāđˆāļĒ: %.2f\n", sum, average);
    } else {
        printf("āđ„āļĄāđˆāļĄāļĩāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™\n");
    }

    return 0;
}

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆ 2: āđ‚āļ›āļĢāđāļāļĢāļĄāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļģāļāļĨāļąāļš (Palindrome)

āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļē String āļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ€āļ‚āđ‰āļēāļĄāļēāđ€āļ›āđ‡āļ™āļ„āļģāļāļĨāļąāļš (āļ­āđˆāļēāļ™āļˆāļēāļāļ‹āđ‰āļēāļĒāđ„āļ›āļ‚āļ§āļēāļŦāļĢāļ·āļ­āļ‚āļ§āļēāđ„āļ›āļ‹āđ‰āļēāļĒāļāđ‡āđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļ™) āļŦāļĢāļ·āļ­āđ„āļĄāđˆ

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool isPalindrome(char str[]) {
    int start = 0;
    int end = strlen(str) - 1;

    while (start < end) {
        if (str[start] != str[end]) {
            return false;
        }
        start++;
        end--;
    }
    return true;
}

int main() {
    char input[100];

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ: ");
    fgets(input, sizeof(input), stdin);

    // āļĨāļš '\n'
    input[strcspn(input, "\n")] = '\0';

    if (isPalindrome(input)) {
        printf("āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ€āļ›āđ‡āļ™āļ„āļģāļāļĨāļąāļš\n");
    } else {
        printf("āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ„āļĄāđˆāđƒāļŠāđˆāļ„āļģāļāļĨāļąāļš\n");
    }

    return 0;
}

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆ 3: āđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļĢāļđāļ›āđāļšāļš CSV

āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™āļĢāļđāļ›āđāļšāļš CSV (Comma Separated Values) āđāļĨāđ‰āļ§āđāļĒāļāđāļ•āđˆāļĨāļ°āļ„āđˆāļēāļ­āļ­āļāļĄāļē

#include <stdio.h>
#include <string.h>

int main() {
    char input[200];
    char *token;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļš CSV: ");
    fgets(input, sizeof(input), stdin);

    // āļĨāļš '\n'
    input[strcspn(input, "\n")] = '\0';

    // āđāļĒāļāļ‚āđ‰āļ­āļĄāļđāļĨāļ”āđ‰āļ§āļĒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒāļˆāļļāļĨāļ āļēāļ„
    token = strtok(input, ",");
    while (token != NULL) {
        printf("āļ„āđˆāļē: %s\n", token);
        token = strtok(NULL, ",");
    }

    return 0;
}

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆ 4: āđ‚āļ›āļĢāđāļāļĢāļĄāđ‚āļ•āđ‰āļ•āļ­āļš (Interactive) āļ—āļĩāđˆāļĢāļąāļš Input āļŦāļĨāļēāļĒāļ„āļĢāļąāđ‰āļ‡

āļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļˆāļēāļāļœāļđāđ‰āđƒāļŠāđ‰āļŦāļĨāļēāļĒāļ„āļĢāļąāđ‰āļ‡āđāļĨāļ°āļ—āļģāļ‡āļēāļ™āļ•āļēāļĄ Input āļ—āļĩāđˆāļ›āđ‰āļ­āļ™ āļˆāļ™āļāļ§āđˆāļēāļœāļđāđ‰āđƒāļŠāđ‰āļˆāļ°āļžāļīāļĄāļžāđŒāļ„āļģāļŠāļąāđˆāļ‡ exit

#include <stdio.h>
#include <string.h>

int main() {
    char input[50];

    printf("āļžāļīāļĄāļžāđŒ 'exit' āđ€āļžāļ·āđˆāļ­āļ­āļ­āļāļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄ\n");
    while (1) {
        printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ„āļģāļŠāļąāđˆāļ‡: ");
        fgets(input, sizeof(input), stdin);

        // āļĨāļš '\n'
        input[strcspn(input, "\n")] = '\0';

        if (strcmp(input, "exit") == 0) {
            printf("āļˆāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄ\n");
            break;
        } else {
            printf("āļ„āļģāļŠāļąāđˆāļ‡āļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %s\n", input);
        }
    }

    return 0;
}

āļŠāļĢāļļāļ›

āļˆāļēāļāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰ āļˆāļ°āđ€āļŦāđ‡āļ™āļ§āđˆāļē Standard Input āļŠāļēāļĄāļēāļĢāļ–āļ™āļģāđ„āļ›āđƒāļŠāđ‰āļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āđāļšāļšāļžāļ·āđ‰āļ™āļāļēāļ™āđāļĨāļ°āđāļšāļšāđ‚āļ•āđ‰āļ•āļ­āļšāļˆāļĢāļīāļ‡ āļāļēāļĢāđ€āļ‚āđ‰āļēāđƒāļˆāđāļĨāļ°āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰āļ§āļīāļ˜āļĩāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄ āļˆāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļ‚āļ­āļ‡āļ„āļļāļ“āļĄāļĩāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āđāļĨāļ°āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļˆāļĢāļīāļ‡

8. āļšāļ—āļŠāļĢāļļāļ›

āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āđ„āļ”āđ‰āļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāđƒāļŠāđ‰ Standard Input āđƒāļ™āļ āļēāļĐāļē C āļ•āļąāđ‰āļ‡āđāļ•āđˆāļžāļ·āđ‰āļ™āļāļēāļ™āļˆāļ™āļ–āļķāļ‡āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒ āļžāļĢāđ‰āļ­āļĄāļ—āļąāđ‰āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ āđāļĨāļ°āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļĢāļīāļ‡

āļ—āļšāļ—āļ§āļ™āļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡ Standard Input

  • Standard Input āļ„āļ·āļ­āļāļĨāđ„āļāļžāļ·āđ‰āļ™āļāļēāļ™āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ āļēāļĒāļ™āļ­āļāđ„āļ”āđ‰
  • āļ āļēāļĐāļē C āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™ scanf āđāļĨāļ° fgets āļŠāļģāļŦāļĢāļąāļšāļĢāļąāļšāļ„āđˆāļē āđ€āļŠāđˆāļ™ āļ•āļąāļ§āđ€āļĨāļ‚āđāļĨāļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ

āļˆāļļāļ”āļŠāļģāļ„āļąāļāđƒāļ™āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ Input āļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

  1. āļ›āđ‰āļ­āļ‡āļāļąāļ™ Buffer Overflow
  • āđƒāļŠāđ‰ scanf āļžāļĢāđ‰āļ­āļĄāļāļģāļŦāļ™āļ”āļ‚āļ™āļēāļ” āđ€āļŠāđˆāļ™ %9s
  • āđƒāļŠāđ‰ fgets āļŠāļģāļŦāļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĒāļēāļ§āļŦāļĢāļ·āļ­āļāļēāļĢāļ­āđˆāļēāļ™āļ—āļĩāļĨāļ°āļšāļĢāļĢāļ—āļąāļ”
  1. āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡ Input
  • āđƒāļŠāđ‰ strtol āļŦāļĢāļ·āļ­ strtod āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļš Error
  • āđ€āļžāļīāđˆāļĄāļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Error āđ€āļĄāļ·āđˆāļ­ Input āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
  1. āļāļēāļĢāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰
  • āļˆāļąāļ”āļāļēāļĢ Input āļŦāļĨāļēāļĒāļ„āđˆāļē āļŦāļĨāļēāļĒāļšāļĢāļĢāļ—āļąāļ” āļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđ„āļ”āđ‰

āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ•āđˆāļ­āđ„āļ›

āļŦāļĨāļąāļ‡āļˆāļēāļāđ€āļ‚āđ‰āļēāđƒāļˆ Standard Input āđāļĨāđ‰āļ§ āļ„āļ§āļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđƒāļ™āļŦāļąāļ§āļ‚āđ‰āļ­:

  • Standard Output āđāļĨāļ° Standard Error: āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļžāļīāļĄāļžāđŒāļœāļĨāļĨāļąāļžāļ˜āđŒāđāļĨāļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ Error
  • āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļāļąāļšāđ„āļŸāļĨāđŒ: āļœāļŠāļēāļ™āļāļēāļĢāļ­āđˆāļēāļ™āđ„āļŸāļĨāđŒāđ€āļ‚āđ‰āļēāļāļąāļš Standard Input
  • āļāļēāļĢāļ—āļģāđāļšāļšāļāļķāļāļŦāļąāļ”āļˆāļĢāļīāļ‡: āļ™āļģāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ„āļ›āļ›āļĢāļąāļšāđƒāļŠāđ‰āļāļąāļšāđ‚āļ›āļĢāđ€āļˆāđ‡āļāļ•āđŒāļ‚āļ­āļ‡āļ„āļļāļ“

āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ–āļķāļ‡āļœāļđāđ‰āļ­āđˆāļēāļ™

Standard Input āđ€āļ›āđ‡āļ™āļžāļ·āđ‰āļ™āļāļēāļ™āļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āļ āļēāļĐāļē C āļ—āļĩāđˆāđāļĄāđ‰āļˆāļ°āļ”āļđāđ€āļĢāļĩāļĒāļšāļ‡āđˆāļēāļĒ āđāļ•āđˆāļāđ‡āļĄāļĩāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļĨāļķāļāļ‹āļķāđ‰āļ‡ āļŦāļēāļāļāļķāļāđƒāļŠāđ‰āđƒāļŦāđ‰āļ–āļđāļāļ•āđ‰āļ­āļ‡ āļ„āļļāļ“āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļĨāļ°āļžāļĢāđ‰āļ­āļĄāļ•āđˆāļ­āļĒāļ­āļ”āđ„āļ›āļĒāļąāļ‡āļ‡āļēāļ™āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļĄāļēāļāļ‚āļķāđ‰āļ™