āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļ āļēāļĐāļē C: āļ„āļđāđˆāļĄāļ·āļ­āļžāļ·āđ‰āļ™āļāļēāļ™āļ–āļķāļ‡āļ‚āļąāđ‰āļ™āļŠāļđāļ‡āļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”

į›ŪæŽĄ

1. āļšāļ—āļ™āļģ: āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļ āļēāļĐāļē C āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

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

āļšāļ—āļšāļēāļ—āļ‚āļ­āļ‡āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļ āļēāļĐāļē C

āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļ āļēāļĐāļē C āļ–āļđāļāđƒāļŠāđ‰āļŦāļĨāļąāļāđ† āđ€āļžāļ·āđˆāļ­āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāļ”āļąāļ‡āļ™āļĩāđ‰

  1. āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļœāļđāđ‰āđƒāļŠāđ‰: āļœāļđāđ‰āđƒāļŠāđ‰āļ›āđ‰āļ­āļ™āļ•āļąāļ§āđ€āļĨāļ‚āļŦāļĢāļ·āļ­āļŠāļ•āļĢāļīāļ‡āļˆāļēāļāļ„āļ­āļ™āđ‚āļ‹āļĨ
  2. āļāļēāļĢāļ­āđˆāļēāļ™āđ„āļŸāļĨāđŒ: āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ„āļŸāļĨāđŒāļ āļēāļĒāļ™āļ­āļāđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
  3. āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļĨāļ°āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨ: āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđāļĨāļ°āđāļāđ‰āđ„āļ‚/āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ•āļēāļĄāļ„āļ§āļēāļĄāļˆāļģāđ€āļ›āđ‡āļ™

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

āļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļē

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

  • āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” (Error Handling): āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļˆāļēāļāļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļœāļīāļ”āļžāļĨāļēāļ”āļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ„āļĄāđˆāļ„āļēāļ”āļ„āļīāļ”āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļĨāđˆāļĄāļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄ
  • āļāļēāļĢāļĢāļąāļāļĐāļēāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ: āđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒāđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļŠāđˆāļ­āļ‡āđ‚āļŦāļ§āđˆ āđ€āļŠāđˆāļ™ Buffer Overflow
  • āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļšāļĢāļđāļ›āđāļšāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒ: āļ­āļ­āļāđāļšāļšāđƒāļŦāđ‰āļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āđ€āļžāļ·āđˆāļ­āļĢāļ­āļ‡āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļĢāļđāļ›āđāļšāļšāļ•āđˆāļēāļ‡āđ† āđ€āļŠāđˆāļ™ āļ•āļąāļ§āđ€āļĨāļ‚ āļŠāļ•āļĢāļīāļ‡ āđāļĨāļ°āđ„āļŸāļĨāđŒ

āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāđāļĨāļ°āđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ‚āļ­āļ‡āļšāļ—āļ„āļ§āļēāļĄ

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

  1. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āļ­āļ‡ Standard Input āđāļĨāļ° Standard Output
  2. āļāļēāļĢāđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļžāļ·āđ‰āļ™āļāļēāļ™āđāļĨāļ°āļāļēāļĢāļ„āļģāļ™āļķāļ‡āļ–āļķāļ‡āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ
  3. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāļ‚āļąāđ‰āļ™āļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ„āļŸāļĨāđŒ
  4. āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđāļĨāļ°āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļšāļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒ

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

āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ–āļąāļ”āđ„āļ›

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

2. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāļžāļ·āđ‰āļ™āļāļēāļ™āđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™

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

2.1 āļāļĨāđ„āļāļ‚āļ­āļ‡ Standard Input āđāļĨāļ° Standard Output

āđƒāļ™āļ āļēāļĐāļē C “Standard Input” āļ„āļ·āļ­āļāļĨāđ„āļāļ—āļĩāđˆāđƒāļŠāđ‰āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ„āļĩāļĒāđŒāļšāļ­āļĢāđŒāļ” āļŠāđˆāļ§āļ™ â€œStandard Output” āļ„āļ·āļ­āļāļĨāđ„āļāļ—āļĩāđˆāđƒāļŠāđ‰āđāļŠāļ”āļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒāļšāļ™āļŦāļ™āđ‰āļēāļˆāļ­

āļ āļēāļžāļĢāļ§āļĄāļ‚āļ­āļ‡ Standard Input (stdin) āđāļĨāļ° Standard Output (stdout)

  • Standard Input (stdin): āđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļ›āđ‰āļ­āļ™āļˆāļēāļāļ„āļĩāļĒāđŒāļšāļ­āļĢāđŒāļ”
  • Standard Output (stdout): āđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĢāļąāļšāļĄāļēāđāļĨāļ°āļœāļĨāļĨāļąāļžāļ˜āđŒāļ—āļĩāđˆāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļĨāđ‰āļ§āļšāļ™āļŦāļ™āđ‰āļēāļˆāļ­

āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļ™āļĩāđ‰āļ–āļđāļāļāļģāļŦāļ™āļ”āđ„āļ§āđ‰āđƒāļ™āđ„āļĨāļšāļĢāļēāļĢāļĩāļĄāļēāļ•āļĢāļāļēāļ™ <stdio.h> āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ­āļīāļŠāļĢāļ°āđƒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļžāļ·āđ‰āļ™āļāļēāļ™

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰āļ„āļ·āļ­āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļĢāļąāļšāļ„āđˆāļēāļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ 1 āļ„āđˆāļē āļˆāļēāļ 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;
}

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

2.2 āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāļ”āđ‰āļ§āļĒāļŸāļąāļ‡āļāđŒāļŠāļąāļ™ scanf

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ scanf

scanf("āļ•āļąāļ§āļĢāļ°āļšāļļāļĢāļđāļ›āđāļšāļš", &āļ•āļąāļ§āđāļ›āļĢ);

āļ•āļąāļ§āļĢāļ°āļšāļļāļĢāļđāļ›āđāļšāļš (Format Specifier) āđƒāļŠāđ‰āļĢāļ°āļšāļļāļŠāļ™āļīāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļˆāļ°āļĢāļąāļšāđ€āļ‚āđ‰āļēāļĄāļē āļ•āļąāļ§āļŦāļĨāļąāļāđ† āļĄāļĩāļ”āļąāļ‡āļ™āļĩāđ‰

āļ•āļąāļ§āļĢāļ°āļšāļļāļŠāļ™āļīāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
%dintāļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ
%ffloatāļˆāļģāļ™āļ§āļ™āļ—āļĻāļ™āļīāļĒāļĄāđāļšāļšāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđ€āļ”āļĩāđˆāļĒāļ§
%lfdoubleāļˆāļģāļ™āļ§āļ™āļ—āļĻāļ™āļīāļĒāļĄāđāļšāļšāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļ„āļđāđˆ
%ccharāļ­āļąāļāļ‚āļĢāļ°āđ€āļ”āļĩāđˆāļĒāļ§
%schar arrayāļŠāļ•āļĢāļīāļ‡

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™: āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļēāļĒāļ„āđˆāļē

#include <stdio.h>

int main() {
    int age;
    float height;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ­āļēāļĒāļļāđāļĨāļ°āļŠāđˆāļ§āļ™āļŠāļđāļ‡ (āļ„āļąāđˆāļ™āļ”āđ‰āļ§āļĒāđ€āļ§āđ‰āļ™āļ§āļĢāļĢāļ„): ");
    scanf("%d %f", &age, &height); // āļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāđāļĨāļ°āļ—āļĻāļ™āļīāļĒāļĄ
    printf("āļ­āļēāļĒāļļ: %d, āļŠāđˆāļ§āļ™āļŠāļđāļ‡: %.2f\n", age, height);

    return 0;
}

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

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

āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ scanf āļ­āļēāļˆāđ€āļāļīāļ” Buffer Overflow āđ„āļ”āđ‰āļ‡āđˆāļēāļĒāļŦāļēāļāļ‚āļ™āļēāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ€āļāļīāļ™āļāļ§āđˆāļēāļ—āļĩāđˆāļāļģāļŦāļ™āļ” āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļāļēāļĢāļ›āđ‰āļ­āļ™āļŠāļ•āļĢāļīāļ‡āļŦāļēāļāđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļˆāļģāļāļąāļ”āļ‚āļ™āļēāļ” āļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ‡āļ—āļģāđƒāļŦāđ‰āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđ€āļŠāļĩāļĒāļŦāļēāļĒ

2.3 āļāļēāļĢāļ›āđ‰āļ­āļ™āļŠāļ•āļĢāļīāļ‡āđāļĨāļ°āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ

āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ gets āđ„āļĄāđˆāđāļ™āļ°āļ™āļģāđƒāļŦāđ‰āđƒāļŠāđ‰

āđƒāļ™āļ­āļ”āļĩāļ•āļāļēāļĢāļ›āđ‰āļ­āļ™āļŠāļ•āļĢāļīāļ‡āļĄāļąāļāđƒāļŠāđ‰ gets āđāļ•āđˆāđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™ Buffer Overflow āļ—āļģāđƒāļŦāđ‰āđ„āļĄāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ

āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ: fgets

āļ›āļąāļˆāļˆāļļāļšāļąāļ™āđāļ™āļ°āļ™āļģāđƒāļŦāđ‰āđƒāļŠāđ‰ fgets āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āļˆāļģāļāļąāļ”āļ‚āļ™āļēāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĢāļąāļšāđ„āļ”āđ‰

#include <stdio.h>

int main() {
    char name[50];

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgets(name, sizeof(name), stdin); // āļ›āđ‰āļ­āļ™āļŠāļ•āļĢāļīāļ‡āļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ
    printf("āļŠāļ·āđˆāļ­āļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­: %s", name);

    return 0;
}

āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ: fgets āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āļ‚āļ™āļēāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ„āļ”āđ‰ āļˆāļķāļ‡āļ›āđ‰āļ­āļ‡āļāļąāļ™ Buffer Overflow

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

āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ fgets āļˆāļ°āđ€āļāđ‡āļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆāđ„āļ§āđ‰āļ”āđ‰āļ§āļĒ āļˆāļķāļ‡āļ•āđ‰āļ­āļ‡āļĨāļšāļ­āļ­āļ

name[strcspn(name, "\n")] = '\0'; // āļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ

2.4 āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļē

āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡

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

#include <stdio.h>

int main() {
    int number;

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

    printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™: %d\n", number);
    return 0;
}

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

äūã‚Ļãƒģã‚ļニã‚ĒåĄū

3. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāļ‚āļąāđ‰āļ™āļ›āļĢāļ°āļĒāļļāļāļ•āđŒ

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

3.1 āļāļēāļĢāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ„āļŸāļĨāđŒ

āļ™āļ­āļāļˆāļēāļ Standard Input āđāļĨāđ‰āļ§ āļāļēāļĢāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļ āđ„āļŸāļĨāđŒ āļāđ‡āđ€āļ›āđ‡āļ™āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļŠāļģāļ„āļąāļāđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđāļāļĢāļĄāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđāļŦāļĨāđˆāļ‡āļ āļēāļĒāļ™āļ­āļ

āļāļēāļĢāđ€āļ›āļīāļ”āđāļĨāļ°āļ›āļīāļ”āđ„āļŸāļĨāđŒ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ„āļŸāļĨāđŒāļ—āļģāđ„āļ”āđ‰āđ‚āļ”āļĒāđƒāļŠāđ‰ fopen āđ€āļžāļ·āđˆāļ­āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒ āđāļĨāļ° fclose āđ€āļžāļ·āđˆāļ­āļ›āļīāļ”āđ„āļŸāļĨāđŒ

#include <stdio.h>

int main() {
    FILE *file; // āļ•āļąāļ§āļŠāļĩāđ‰āđ„āļŸāļĨāđŒ
    file = fopen("data.txt", "r"); // āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāđƒāļ™āđ‚āļŦāļĄāļ”āļ­āđˆāļēāļ™

    if (file == NULL) { // āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”
        printf("āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāđ„āļ”āđ‰\n");
        return 1;
    }

    printf("āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāļŠāļģāđ€āļĢāđ‡āļˆ\n");

    fclose(file); // āļ›āļīāļ”āđ„āļŸāļĨāđŒ
    return 0;
}

āļŦāļēāļāđ„āļŸāļĨāđŒāđ„āļĄāđˆāļĄāļĩāļ­āļĒāļđāđˆ āļˆāļ°āļĄāļĩāļāļēāļĢāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđāļĨāļ°āļŠāļīāđ‰āļ™āļŠāļļāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™

āļāļēāļĢāđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ fscanf āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ„āļŸāļĨāđŒ

fscanf āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ„āļŸāļĨāđŒāļ•āļēāļĄāļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđ„āļ”āđ‰

#include <stdio.h>

int main() {
    FILE *file;
    int id;
    char name[50];

    file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāđ„āļ”āđ‰\n");
        return 1;
    }

    while (fscanf(file, "%d %s", &id, name) != EOF) { // āļ­āđˆāļēāļ™āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļ–āļķāļ‡ EOF
        printf("ID: %d, āļŠāļ·āđˆāļ­: %s\n", id, name);
    }

    fclose(file);
    return 0;
}

āđƒāļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ™āļĩāđ‰ data.txt āļˆāļ°āļ–āļđāļāļ­āđˆāļēāļ™āļ—āļĩāļĨāļ°āļšāļĢāļĢāļ—āļąāļ”āđ€āļžāļ·āđˆāļ­āļ™āļģāļ„āđˆāļēāļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄāđāļĨāļ°āļŠāļ•āļĢāļīāļ‡āļ­āļ­āļāļĄāļēāđƒāļŠāđ‰

3.2 āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āđ€āļ‚āđ‰āļēāļĄāļēāļ­āļēāļˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āđ€āļŠāļĄāļ­āđ„āļ› āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āļˆāļķāļ‡āđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļˆāļģāđ€āļ›āđ‡āļ™

āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡

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

#include <stdio.h>

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

    while (scanf("%d", &number) != 1) { // āļ–āđ‰āļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
        printf("āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āđƒāļŦāļĄāđˆ: ");
        while (getchar() != '\n'); // āļĨāđ‰āļēāļ‡āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ
    }

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

āđ€āļĄāļ·āđˆāļ­āļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļœāļīāļ” āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āđƒāļŦāđ‰āļ›āđ‰āļ­āļ™āđƒāļŦāļĄāđˆāļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļ–āļđāļāļ•āđ‰āļ­āļ‡

3.3 āļāļēāļĢāđāļ›āļĨāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļ•āļąāļ§āđ€āļĨāļ‚

āļšāđˆāļ­āļĒāļ„āļĢāļąāđ‰āļ‡āļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđāļ›āļĨāļ‡āļŠāļ•āļĢāļīāļ‡āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđ€āļĨāļ‚ āļ‹āļķāđˆāļ‡āļ āļēāļĐāļē C āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ­āļĒāđˆāļēāļ‡ strtol āđāļĨāļ° strtod āđƒāļŦāđ‰āđƒāļŠāđ‰

āļāļēāļĢāđāļ›āļĨāļ‡āļŠāļ•āļĢāļīāļ‡āđ€āļ›āđ‡āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ (strtol)

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

int main() {
    char input[20];
    char *endptr;
    long value;

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

    value = strtol(input, &endptr, 10); // āđāļ›āļĨāļ‡āđ€āļ›āđ‡āļ™āļāļēāļ™ 10

    if (*endptr != '\0' && *endptr != '\n') { // āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡
        printf("āļ•āļąāļ§āđ€āļĨāļ‚āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡\n");
    } else {
        printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­ %ld\n", value);
    }

    return 0;
}

āļŦāļēāļāļĄāļĩāļ­āļąāļāļ‚āļĢāļ°āļ—āļĩāđˆāđ„āļĄāđˆāđƒāļŠāđˆāļ•āļąāļ§āđ€āļĨāļ‚ āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āđāļˆāđ‰āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

āļāļēāļĢāđāļ›āļĨāļ‡āļŠāļ•āļĢāļīāļ‡āđ€āļ›āđ‡āļ™āļ—āļĻāļ™āļīāļĒāļĄ (strtod)

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

int main() {
    char input[20];
    char *endptr;
    double value;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ•āļąāļ§āđ€āļĨāļ‚āļ—āļĻāļ™āļīāļĒāļĄ: ");
    fgets(input, sizeof(input), stdin);

    value = strtod(input, &endptr);

    if (*endptr != '\0' && *endptr != '\n') {
        printf("āļ•āļąāļ§āđ€āļĨāļ‚āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡\n");
    } else {
        printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™āļ„āļ·āļ­ %.2f\n", value);
    }

    return 0;
}

āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ™āļĩāđ‰āļŠāļēāļĄāļēāļĢāļ–āđāļ›āļĨāļ‡āļ„āđˆāļēāļ—āļĻāļ™āļīāļĒāļĄāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđāļĄāđˆāļ™āļĒāļģ

4. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™āđāļĨāļ°āļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒ

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

4.1 āļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļžāļĢāđ‰āļ­āļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļĢāļŦāļąāļŠāļ­āļąāļāļ‚āļĢāļ°āđāļĨāļ°āļāļēāļĢāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠ (Encoding)

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

āļĢāļŦāļąāļŠāļ­āļąāļāļ‚āļĢāļ°āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī
UTF-8āļĄāļēāļ•āļĢāļāļēāļ™āļŠāļēāļāļĨ āđƒāļŠāđ‰āđ„āļ”āđ‰āļāļąāļšāļŦāļĨāļēāļĒāļĢāļ°āļšāļšāđāļĨāļ°āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ
Shift_JISāļ™āļīāļĒāļĄāđƒāļŠāđ‰āđƒāļ™āļ›āļĢāļ°āđ€āļ—āļĻāļāļĩāđˆāļ›āļļāđˆāļ™ āļĄāļĩāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļ”āļĩāļāļąāļšāļĢāļ°āļšāļšāđ€āļāđˆāļē
EUC-JPāđƒāļŠāđ‰āļšāđˆāļ­āļĒāđƒāļ™āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđāļšāļš UNIX

āļŦāļēāļāļ•āđ‰āļ­āļ‡āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļŦāļĨāļēāļĒāļ āļēāļĐāļē āđāļ™āļ°āļ™āļģāđƒāļŦāđ‰āđƒāļŠāđ‰ UTF-8

āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē Locale

āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļĢāļ­āļ‡āļĢāļąāļšāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™ āļ•āđ‰āļ­āļ‡āļ•āļąāđ‰āļ‡āļ„āđˆāļē Locale āļ”āļąāļ‡āļ™āļĩāđ‰

#include <stdio.h>
#include <locale.h>

int main() {
    setlocale(LC_ALL, "ja_JP.UTF-8"); // āļ•āļąāđ‰āļ‡āļ„āđˆāļē locale āļŠāļģāļŦāļĢāļąāļšāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™

    printf("āļ•āļąāđ‰āļ‡āļ„āđˆāļē Locale āđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒ\n");
    return 0;
}

āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ™āļĩāđ‰āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļ•āļĢāļīāļ‡āļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™

4.2 āļāļēāļĢāđƒāļŠāđ‰ Wide Character āđāļĨāļ° wchar_t

āļ āļēāļĐāļē C āļĄāļĩāļŠāļ™āļīāļ”āļ‚āđ‰āļ­āļĄāļđāļĨ Wide Character (wchar_t) āđ€āļžāļ·āđˆāļ­āļĢāļ­āļ‡āļĢāļąāļšāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™āđāļĨāļ°āļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒ āļŠāļēāļĄāļēāļĢāļ–āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰āļĄāļēāļāļāļ§āđˆāļē char āļ›āļāļ•āļī

āļāļēāļĢāļ›āđ‰āļ­āļ™āđāļĨāļ°āđāļŠāļ”āļ‡āļœāļĨ Wide Character

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main() {
    wchar_t name[50];
    setlocale(LC_ALL, "ja_JP.UTF-8"); // āļ•āļąāđ‰āļ‡āļ„āđˆāļē locale āļŠāļģāļŦāļĢāļąāļšāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™

    wprintf(L"āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgetws(name, sizeof(name) / sizeof(wchar_t), stdin); // āļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļš wide char
    wprintf(L"āļŠāļ·āđˆāļ­āļ™āļĩāđ‰āļ„āļ·āļ­: %ls\n", name);

    return 0;
}

āļˆāļļāļ”āļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āđ‚āļ„āđ‰āļ”

  1. āļāļēāļĢāđƒāļŠāđ‰ setlocale āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ–āļđāļāļ•āđ‰āļ­āļ‡
  2. āļāļēāļĢāđƒāļŠāđ‰ wchar_t āđ€āļžāļ·āđˆāļ­āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒ
  3. āļāļēāļĢāđƒāļŠāđ‰ wprintf āđāļĨāļ° fgetws āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āđ‰āļ­āļ™āđāļĨāļ°āđāļŠāļ”āļ‡āļœāļĨāđāļšāļš wide char

4.3 āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒ

āļāļēāļĢāļ™āļąāļšāļˆāļģāļ™āļ§āļ™āļ­āļąāļāļ‚āļĢāļ°āđāļĨāļ°āđ„āļšāļ•āđŒ

āļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒāļ­āļēāļˆāđƒāļŠāđ‰āļĄāļēāļāļāļ§āđˆāļē 1 āđ„āļšāļ•āđŒāļ•āđˆāļ­āļ­āļąāļāļ‚āļĢāļ° āļ”āļąāļ‡āļ™āļąāđ‰āļ™āļāļēāļĢāļ™āļąāļšāļˆāļģāļ™āļ§āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļžāļīāđ€āļĻāļĐ

#include <stdio.h>
#include <locale.h>
#include <wchar.h>

int main() {
    setlocale(LC_ALL, "ja_JP.UTF-8");

    char str[] = "こんãŦãĄãŊ"; // āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™
    int length = mbstowcs(NULL, str, 0); // āđāļ›āļĨāļ‡āđ€āļ›āđ‡āļ™ wide char āđ€āļžāļ·āđˆāļ­āļŦāļēāļˆāļģāļ™āļ§āļ™āļ­āļąāļāļ‚āļĢāļ°

    printf("āļˆāļģāļ™āļ§āļ™āļ­āļąāļāļ‚āļĢāļ°: %d\n", length);
    return 0;
}

4.4 āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ‚āļ­āļ‡āļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒ

āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĢāļŦāļąāļŠāļ­āļąāļāļ‚āļĢāļ°āļ—āļĩāđˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <wchar.h>

int main() {
    setlocale(LC_ALL, "ja_JP.UTF-8");

    char input[100];
    wchar_t output[100];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ•āļĢāļīāļ‡: ");
    fgets(input, sizeof(input), stdin);

    if (mbstowcs(output, input, 100) == (size_t)-1) { // āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”
        printf("āļ•āļĢāļ§āļˆāļžāļšāļĢāļŦāļąāļŠāļ­āļąāļāļ‚āļĢāļ°āļ—āļĩāđˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡\n");
        return 1;
    }

    wprintf(L"āļœāļĨāļĨāļąāļžāļ˜āđŒāļāļēāļĢāđāļ›āļĨāļ‡: %ls\n", output);
    return 0;
}

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

5. āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļŠāļīāļ‡āļ›āļāļīāļšāļąāļ•āļī: āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāļ„āļĢāļšāļ§āļ‡āļˆāļĢ

āļŠāđˆāļ§āļ™āļ™āļĩāđ‰āļˆāļ°āļ™āļģāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆāđ„āļ”āđ‰āđ€āļĢāļĩāļĒāļ™āļĄāļēāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ āđ‚āļ›āļĢāđāļāļĢāļĄāļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāļ„āļĢāļšāļ§āļ‡āļˆāļĢ āļ‹āļķāđˆāļ‡āļˆāļ°āļĢāļ§āļĄāļāļēāļĢāļ›āđ‰āļ­āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ āļ—āļĻāļ™āļīāļĒāļĄ āļŠāļ•āļĢāļīāļ‡ āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨ āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļāļąāļšāđ„āļŸāļĨāđŒ āđāļĨāļ°āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļšāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™

5.1 āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆ 1: āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļēāļĒāļ›āļĢāļ°āđ€āļ āļ—āđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļš

āđ‚āļ›āļĢāđāļāļĢāļĄāļ™āļĩāđ‰āļˆāļ°āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļ·āđˆāļ­ āļ­āļēāļĒāļļ āđāļĨāļ°āļŠāđˆāļ§āļ™āļŠāļđāļ‡ āļžāļĢāđ‰āļ­āļĄāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ

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

int main() {
    int age;
    float height;
    char name[50];

    // āļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgets(name, sizeof(name), stdin);
    name[strcspn(name, "\n")] = '\0'; // āļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ

    // āļ›āđ‰āļ­āļ™āđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ­āļēāļĒāļļ
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ­āļēāļĒāļļ: ");
    while (scanf("%d", &age) != 1 || age < 0) {
        printf("āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āđƒāļŦāļĄāđˆ: ");
        while (getchar() != '\n'); // āļĨāđ‰āļēāļ‡āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ
    }

    // āļ›āđ‰āļ­āļ™āđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāđˆāļ§āļ™āļŠāļđāļ‡
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāđˆāļ§āļ™āļŠāļđāļ‡ (āļ‹āļĄ.): ");
    while (scanf("%f", &height) != 1 || height < 0) {
        printf("āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āđƒāļŦāļĄāđˆ: ");
        while (getchar() != '\n');
    }

    // āđāļŠāļ”āļ‡āļœāļĨāļĨāļąāļžāļ˜āđŒ
    printf("āļŠāļ·āđˆāļ­: %s\n", name);
    printf("āļ­āļēāļĒāļļ: %d āļ›āļĩ\n", age);
    printf("āļŠāđˆāļ§āļ™āļŠāļđāļ‡: %.2f āļ‹āļĄ.\n", height);

    return 0;
}

āļˆāļļāļ”āļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āđ‚āļ„āđ‰āļ”

  1. āļāļēāļĢāļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ: āđƒāļŠāđ‰ strcspn āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļ•āļĢāļīāļ‡āļŠāļ°āļ­āļēāļ”
  2. āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨ: āđƒāļŠāđ‰āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ›āđ‡āļ™āļšāļ§āļāđāļĨāļ°āļ­āļĒāļđāđˆāđƒāļ™āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
  3. āļāļēāļĢāļĨāđ‰āļēāļ‡āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ: āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļēāļāļēāļĢāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļœāļīāļ”āļžāļĨāļēāļ”

5.2 āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆ 2: āļāļēāļĢāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ„āļŸāļĨāđŒ

āđ‚āļ›āļĢāđāļāļĢāļĄāļ™āļĩāđ‰āļˆāļ°āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒ data.txt āđāļĨāļ°āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ ID āļŠāļ·āđˆāļ­ āđāļĨāļ°āļ„āļ°āđāļ™āļ™

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

int main() {
    FILE *file;
    int id;
    char name[50];
    float score;

    // āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒ
    file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāđ„āļ”āđ‰\n");
        return 1;
    }

    printf("āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļąāđ‰āļ‡āļŦāļĄāļ”:\n");

    // āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ„āļŸāļĨāđŒ
    while (fscanf(file, "%d %s %f", &id, name, &score) == 3) {
        printf("ID: %d, āļŠāļ·āđˆāļ­: %s, āļ„āļ°āđāļ™āļ™: %.2f\n", id, name, score);
    }

    fclose(file);
    return 0;
}

āļˆāļļāļ”āļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āđ‚āļ„āđ‰āļ”

  1. āđƒāļŠāđ‰ fopen āđāļĨāļ° fclose āđ€āļžāļ·āđˆāļ­āļˆāļąāļ”āļāļēāļĢāđ„āļŸāļĨāđŒāļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ
  2. āđƒāļŠāđ‰ fscanf āđ€āļžāļ·āđˆāļ­āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļēāļĒāļ›āļĢāļ°āđ€āļ āļ—āļˆāļēāļāđ„āļŸāļĨāđŒ
  3. āļ§āļ™āļĨāļđāļ›āļˆāļ™āļ–āļķāļ‡ EOF āđ€āļžāļ·āđˆāļ­āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļąāđ‰āļ‡āļŦāļĄāļ”

5.3 āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆ 3: āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ›āđ‰āļ­āļ™āļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™

āđ‚āļ›āļĢāđāļāļĢāļĄāļ™āļĩāđ‰āđƒāļŠāđ‰ Wide Character āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­āđ€āļ›āđ‡āļ™āļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™āđāļĨāļ°āļšāļąāļ™āļ—āļķāļāļĨāļ‡āđ„āļŸāļĨāđŒ

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main() {
    FILE *file;
    wchar_t name[50];

    // āļ•āļąāđ‰āļ‡āļ„āđˆāļē locale
    setlocale(LC_ALL, "ja_JP.UTF-8");

    // āļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­
    wprintf(L"āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgetws(name, sizeof(name) / sizeof(wchar_t), stdin);

    // āļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆ
    name[wcslen(name) - 1] = L'\0';

    // āļšāļąāļ™āļ—āļķāļāļĨāļ‡āđ„āļŸāļĨāđŒ
    file = fopen("output.txt", "w");
    if (file == NULL) {
        wprintf(L"āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļīāļ”āđ„āļŸāļĨāđŒāđ„āļ”āđ‰\n");
        return 1;
    }

    fwprintf(file, L"āļŠāļ·āđˆāļ­: %ls\n", name);
    fclose(file);

    wprintf(L"āļšāļąāļ™āļ—āļķāļāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒ\n");
    return 0;
}

āļˆāļļāļ”āļŠāļģāļ„āļąāļāļ‚āļ­āļ‡āđ‚āļ„āđ‰āļ”

  1. āļ•āļąāđ‰āļ‡āļ„āđˆāļē Locale āđ€āļžāļ·āđˆāļ­āļĢāļ­āļ‡āļĢāļąāļšāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™
  2. āđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ Wide Character āđ€āļŠāđˆāļ™ fgetws āđāļĨāļ° fwprintf
  3. āļĨāļšāļ­āļąāļāļ‚āļĢāļ°āļ‚āļķāđ‰āļ™āļšāļĢāļĢāļ—āļąāļ”āđƒāļŦāļĄāđˆāļāđˆāļ­āļ™āļšāļąāļ™āļ—āļķāļāļ‚āđ‰āļ­āļĄāļđāļĨ

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

āđƒāļ™āļŠāđˆāļ§āļ™āļ™āļĩāđ‰āđ€āļĢāļēāļˆāļ°āļāļĨāđˆāļēāļ§āļ–āļķāļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ—āļĩāđˆāļĄāļąāļāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāđƒāļ™āļ āļēāļĐāļē C āđāļĨāļ°āđāļ™āļ§āļ—āļēāļ‡āđāļāđ‰āđ„āļ‚āļ›āļąāļāļŦāļē

6.1 Buffer Overflow

āļ āļēāļžāļĢāļ§āļĄāļ‚āļ­āļ‡āļ›āļąāļāļŦāļē

āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ­āļĒāđˆāļēāļ‡ scanf āļŦāļēāļāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļāļīāļ™āļ‚āļ™āļēāļ”āļ—āļĩāđˆāļāļģāļŦāļ™āļ” āļ­āļēāļˆāđ€āļāļīāļ” Buffer Overflow āļ—āļģāđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļģāļ‡āļēāļ™āļœāļīāļ”āļžāļĨāļēāļ”āļŦāļĢāļ·āļ­āļĄāļĩāļŠāđˆāļ­āļ‡āđ‚āļŦāļ§āđˆāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ›āļąāļāļŦāļē

#include <stdio.h>

int main() {
    char buffer[10];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    scanf("%s", buffer); // āļ­āļēāļˆāđ€āļāļīāļ™āļ‚āļ™āļēāļ” buffer
    printf("āļŠāļ·āđˆāļ­: %s\n", buffer);
    return 0;
}

āļŦāļēāļāļ›āđ‰āļ­āļ™āļŠāļ•āļĢāļīāļ‡āđ€āļāļīāļ™ 10 āļ­āļąāļāļ‚āļĢāļ° āļ­āļēāļˆāļ—āļģāđƒāļŦāđ‰āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđ€āļŠāļĩāļĒāļŦāļēāļĒ

āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚: āđƒāļŠāđ‰ fgets

#include <stdio.h>

int main() {
    char buffer[10];
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgets(buffer, sizeof(buffer), stdin); // āļˆāļģāļāļąāļ”āļ‚āļ™āļēāļ”āļ‚āđ‰āļ­āļĄāļđāļĨ
    printf("āļŠāļ·āđˆāļ­: %s\n", buffer);
    return 0;
}

āļāļēāļĢāđƒāļŠāđ‰ fgets āļˆāļ°āļŠāđˆāļ§āļĒāļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļāļīāļ™āļ‚āļ™āļēāļ”

6.2 āļ‚āđ‰āļ­āļĄāļđāļĨāļ„āđ‰āļēāļ‡āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ

āļ āļēāļžāļĢāļ§āļĄāļ‚āļ­āļ‡āļ›āļąāļāļŦāļē

āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰ scanf āļšāļēāļ‡āļ„āļĢāļąāđ‰āļ‡āļˆāļ°āļĄāļĩāļ­āļąāļāļ‚āļĢāļ°āđ€āļŠāđˆāļ™ \n āđ€āļŦāļĨāļ·āļ­āļ„āđ‰āļēāļ‡āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ āļŠāđˆāļ‡āļœāļĨāđƒāļŦāđ‰āļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ„āļĢāļąāđ‰āļ‡āļ–āļąāļ”āđ„āļ›āļœāļīāļ”āļžāļĨāļēāļ”

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ›āļąāļāļŦāļē

#include <stdio.h>

int main() {
    int age;
    char name[50];

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ­āļēāļĒāļļ: ");
    scanf("%d", &age); // \n āļ„āđ‰āļēāļ‡āļ­āļĒāļđāđˆāđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ
    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgets(name, sizeof(name), stdin); // āļ­āđˆāļēāļ™ \n āđāļ—āļ™āļŠāļ·āđˆāļ­
    printf("āļŠāļ·āđˆāļ­: %s\n", name);
}

āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚: āļĨāđ‰āļēāļ‡āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ

#include <stdio.h>

int main() {
    int age;
    char name[50];

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ­āļēāļĒāļļ: ");
    scanf("%d", &age);
    while (getchar() != '\n'); // āļĨāđ‰āļēāļ‡āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgets(name, sizeof(name), stdin);
    printf("āļŠāļ·āđˆāļ­: %s\n", name);

    return 0;
}

6.3 āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāđāļ›āļĨāļ‡āļ•āļąāļ§āđ€āļĨāļ‚

āļ āļēāļžāļĢāļ§āļĄāļ‚āļ­āļ‡āļ›āļąāļāļŦāļē

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

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ›āļąāļāļŦāļē

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

int main() {
    char input[10];
    int number;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ•āļąāļ§āđ€āļĨāļ‚: ");
    fgets(input, sizeof(input), stdin);
    number = atoi(input); // āđāļ›āļĨāļ‡āđāļĄāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļ°āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
    printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™: %d\n", number);
}

āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚: āđƒāļŠāđ‰ strtol āđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

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

int main() {
    char input[10];
    char *endptr;
    long number;

    printf("āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļ•āļąāļ§āđ€āļĨāļ‚: ");
    fgets(input, sizeof(input), stdin);
    number = strtol(input, &endptr, 10);

    if (*endptr != '\0' && *endptr != '\n') {
        printf("āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡\n");
    } else {
        printf("āļ„āđˆāļēāļ—āļĩāđˆāļ›āđ‰āļ­āļ™: %ld\n", number);
    }

    return 0;
}

6.4 āļ›āļąāļāļŦāļēāļāļēāļĢāđāļŠāļ”āļ‡āļœāļĨāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™ (Mojibake)

āļ āļēāļžāļĢāļ§āļĄāļ‚āļ­āļ‡āļ›āļąāļāļŦāļē

āļŦāļēāļāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļĢāļŦāļąāļŠāļ­āļąāļāļ‚āļĢāļ°āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļāļēāļĢāđāļŠāļ”āļ‡āļœāļĨāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™āļ­āļēāļˆāļœāļīāļ”āđ€āļžāļĩāđ‰āļĒāļ™

āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚: āļ•āļąāđ‰āļ‡āļ„āđˆāļē Locale āđāļĨāļ°āđƒāļŠāđ‰ Wide Character

#include <stdio.h>
#include <locale.h>
#include <wchar.h>

int main() {
    wchar_t name[50];
    setlocale(LC_ALL, "ja_JP.UTF-8");

    wprintf(L"āļāļĢāļļāļ“āļēāļ›āđ‰āļ­āļ™āļŠāļ·āđˆāļ­: ");
    fgetws(name, sizeof(name) / sizeof(wchar_t), stdin);
    wprintf(L"āļŠāļ·āđˆāļ­: %ls\n", name);

    return 0;
}

7. āļŠāļĢāļļāļ›āđāļĨāļ°āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļ–āļąāļ”āđ„āļ›

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

7.1 āļ—āļšāļ—āļ§āļ™āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļŠāļģāļ„āļąāļ

1. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļģāđ€āļ‚āđ‰āļēāļžāļ·āđ‰āļ™āļāļēāļ™

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

2. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āļąāđ‰āļ™āļ›āļĢāļ°āļĒāļļāļāļ•āđŒ

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

3. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™āđāļĨāļ°āļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒ

  • āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē Locale āđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰ Wide Character
  • āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļĨāļ°āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ­āļąāļāļ‚āļĢāļ°āļŦāļĨāļēāļĒāđ„āļšāļ•āđŒāļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ

4. āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļĢāļīāļ‡

  • āļĢāļ§āļĄāļāļēāļĢāļ›āđ‰āļ­āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļēāļĒāļ›āļĢāļ°āđ€āļ āļ— āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨ āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļāļąāļšāđ„āļŸāļĨāđŒ āđāļĨāļ°āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļšāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™

5. āļ›āļąāļāļŦāļēāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāđāļĨāļ°āļāļēāļĢāđāļāđ‰āđ„āļ‚

  • Buffer Overflow, āļ‚āđ‰āļ­āļĄāļđāļĨāļ„āđ‰āļēāļ‡āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ, āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļāļēāļĢāđāļ›āļĨāļ‡āļ•āļąāļ§āđ€āļĨāļ‚ āđāļĨāļ°āļāļēāļĢāđāļŠāļ”āļ‡āļœāļĨāļ āļēāļĐāļēāļāļĩāđˆāļ›āļļāđˆāļ™

7.2 āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ•āđˆāļ­āđ„āļ›

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

  1. āļāļēāļĢāđƒāļŠāđ‰ Array āđāļĨāļ° Pointer
  • āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰ Array/Pointer āđƒāļ™āļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāđāļĨāļ°āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨ
  1. āļāļēāļĢāđƒāļŠāđ‰ Struct āđāļĨāļ°āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđ„āļŸāļĨāđŒāļ‚āļąāđ‰āļ™āļŠāļđāļ‡
  • āđƒāļŠāđ‰ Struct āđ€āļžāļ·āđˆāļ­āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āđāļĨāļ°āļšāļąāļ™āļ—āļķāļ/āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ„āļŸāļĨāđŒāļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž
  1. āļāļēāļĢāđāļĒāļāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđāļĨāļ°āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļšāđ‚āļĄāļ”āļđāļĨ
  • āļ—āļģāđƒāļŦāđ‰āđ‚āļ„āđ‰āļ”āļ­āđˆāļēāļ™āļ‡āđˆāļēāļĒāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļ™āļģāļāļĨāļąāļšāļĄāļēāđƒāļŠāđ‰āđƒāļŦāļĄāđˆāđ„āļ”āđ‰
  1. āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ‚āļąāđ‰āļ™āļŠāļđāļ‡
  • āđ€āļžāļīāđˆāļĄāļĢāļ°āļšāļšāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āđāļĨāļ°āļšāļąāļ™āļ—āļķāļāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļ„āļ§āļēāļĄāļ™āđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­
  1. āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļšāļĄāļąāļĨāļ•āļīāđ€āļ˜āļĢāļ”
  • āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āđāļĨāļ°āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ‚āļ­āļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨ
  1. āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļāļąāļšāļ āļēāļĐāļēāļ­āļ·āđˆāļ™āđāļĨāļ°āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ
  • āļ—āļģāđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļ–āļŠāļ·āđˆāļ­āļŠāļēāļĢāļāļąāļšāļĢāļ°āļšāļšāļ­āļ·āđˆāļ™āđāļĨāļ°āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ

7.3 āļ„āļģāđāļ™āļ°āļ™āļģāļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āļ­āđˆāļēāļ™

1. āļ—āļ”āļĨāļ­āļ‡āđ€āļ‚āļĩāļĒāļ™āđ‚āļ„āđ‰āļ”āļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡

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

2. āđƒāļŠāđ‰āđ€āļ­āļāļŠāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡

  • āļĻāļķāļāļĐāļēāđ€āļ­āļāļŠāļēāļĢāļ‚āļ­āļ‡āđ„āļĨāļšāļĢāļēāļĢāļĩāļĄāļēāļ•āļĢāļāļēāļ™ C āđ€āļžāļ·āđˆāļ­āļŦāļēāļ§āļīāļ˜āļĩāđāļāđ‰āļ›āļąāļāļŦāļēāđ€āļĄāļ·āđˆāļ­āđ€āļˆāļ­āļ‚āđ‰āļ­āļŠāļ‡āļŠāļąāļĒ

3. āđ€āļĢāļīāđˆāļĄāļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļĨāđ‡āļ

  • āļāļķāļāļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄāļ‡āđˆāļēāļĒāđ† āđāļĨāđ‰āļ§āļ„āđˆāļ­āļĒāđ† āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™

4. āļ­āļĒāđˆāļēāļāļĨāļąāļ§āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

  • āđƒāļŠāđ‰āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđ€āļ›āđ‡āļ™āđ‚āļ­āļāļēāļŠāđƒāļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđāļĨāļ°āļžāļąāļ’āļ™āļē

7.4 āļšāļ—āļŠāđˆāļ‡āļ—āđ‰āļēāļĒ

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

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

āļ™āļģāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ—āļĩāđˆāđ„āļ”āđ‰āđ„āļ›āļ—āļ”āļĨāļ­āļ‡āđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļĢāļīāļ‡ āđāļĨāļ°āļ•āđˆāļ­āļĒāļ­āļ”āđ„āļ›āļŠāļđāđˆāļāļēāļĢāļžāļąāļ’āļ™āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒāļĄāļēāļāļ‚āļķāđ‰āļ™