- 1 1. āļāļāļāļģ: āļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļ āļēāļĐāļē C āļāļ·āļāļāļ°āđāļĢ?
- 1.1 āļāļāļāļēāļāļāļāļāļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļ āļēāļĐāļē C
- 1.2 āļāļ§āļēāļĄāļŠāļģāļāļąāļāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļē
- 1.3 āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđāđāļĨāļ°āđāļāļ·āđāļāļŦāļēāļāļāļāļāļāļāļ§āļēāļĄ
- 1.4 āļāļąāđāļāļāļāļāļāļąāļāđāļ
- 2 2. āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāļāļ·āđāļāļāļēāļāđāļĨāļ°āļāļēāļĢāđāļāđāļāļąāļāļāđāļāļąāļ
- 2.1 2.1 āļāļĨāđāļāļāļāļ Standard Input āđāļĨāļ° Standard Output
- 2.2 2.2 āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāļāđāļ§āļĒāļāļąāļāļāđāļāļąāļ scanf
- 2.3 2.3 āļāļēāļĢāļāđāļāļāļŠāļāļĢāļīāļāđāļĨāļ°āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĒāđāļēāļāļāļĨāļāļāļ āļąāļĒ
- 2.4 2.4 āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļāļāļāļāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļē
- 3 3. āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāļāļąāđāļāļāļĢāļ°āļĒāļļāļāļāđ
- 4 4. āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļĐāļēāļāļĩāđāļāļļāđāļāđāļĨāļ°āļāļąāļāļāļĢāļ°āļŦāļĨāļēāļĒāđāļāļāđ
- 4.1 4.1 āļāļēāļĢāđāļāļĢāļĩāļĒāļĄāļāļĢāđāļāļĄāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļ āļēāļĐāļēāļāļĩāđāļāļļāđāļ
- 4.2 4.2 āļāļēāļĢāđāļāđ Wide Character āđāļĨāļ° wchar_t
- 4.3 4.3 āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļąāļāļāļĢāļ°āļŦāļĨāļēāļĒāđāļāļāđ
- 4.4 4.4 āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļāļāļāļāļāļąāļāļāļĢāļ°āļŦāļĨāļēāļĒāđāļāļāđ
- 5 5. āļāļąāļ§āļāļĒāđāļēāļāđāļāļīāļāļāļāļīāļāļąāļāļī: āļāļēāļĢāļŠāļĢāđāļēāļāđāļāļĢāđāļāļĢāļĄāļĢāļąāļāļāđāļāļĄāļđāļĨāđāļāļāļāļĢāļāļ§āļāļāļĢ
- 5.1 5.1 āļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ 1: āļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāļŦāļĨāļēāļĒāļāļĢāļ°āđāļ āļāđāļĨāļ°āļāļĢāļ§āļāļŠāļāļ
- 5.2 5.2 āļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ 2: āļāļēāļĢāļāđāļēāļāļāđāļāļĄāļđāļĨāļāļēāļāđāļāļĨāđ
- 5.3 5.3 āļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ 3: āļĢāļāļāļĢāļąāļāļāļēāļĢāļāđāļāļāļ āļēāļĐāļēāļāļĩāđāļāļļāđāļ
- 6 6. āļāđāļāļāļīāļāļāļĨāļēāļāļāļĩāđāļāļāļāđāļāļĒāđāļĨāļ°āļāļēāļĢāđāļāđāđāļāļāļąāļāļŦāļē
- 7 7. āļŠāļĢāļļāļāđāļĨāļ°āļāļąāđāļāļāļāļāļāļąāļāđāļ
1. āļāļāļāļģ: āļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļ āļēāļĐāļē C āļāļ·āļāļāļ°āđāļĢ?
āļ āļēāļĐāļē C āđāļāđāļāļŦāļāļķāđāļāđāļāļ āļēāļĐāļēāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļĩāđāļāļđāļāđāļāđāļāļĒāđāļēāļāđāļāļĢāđāļŦāļĨāļēāļĒ āđāļĨāļ°āļĄāļĩāļāļāļāļēāļāļŠāļģāļāļąāļāļāļąāđāļāđāļāļāļēāļĢāļāļąāļāļāļēāļĢāļ°āļāļāđāļĨāļ°āļĢāļ°āļāļāļāļąāļāļāļąāļ§
āđāļāļāļĢāļĢāļāļēāļāļąāđāļ âāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēâ āļāļ·āļāđāļāđāļāļāļąāļāļāđāļāļąāļāļāļĩāđāļāļēāļāđāļĄāđāđāļāđāđāļāļ·āđāļāļĢāļąāļāļāđāļāļĄāļđāļĨāļāļēāļāļāļđāđāđāļāđāđāļĨāļ°āļŠāļ°āļāđāļāļāđāļāđāļēāļŠāļđāđāđāļāļĢāđāļāļĢāļĄ
āļāļāļāļ§āļēāļĄāļāļĩāđāļāļ°āļāļāļīāļāļēāļĒāļāļąāđāļāđāļāđāļāļ·āđāļāļāļēāļāđāļāļāļāļāļķāļāļāļąāđāļāļāļĢāļ°āļĒāļļāļāļāđāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāđāļāļ āļēāļĐāļē C āđāļāļĒāđāļŦāđāļāļ§āļēāļĄāļĢāļđāđāļāļĩāđāđāļāđāļāļāļĢāļ°āđāļĒāļāļāđāļāļąāđāļāļŠāļģāļŦāļĢāļąāļāļāļđāđāđāļĢāļīāđāļĄāļāđāļāđāļĨāļ°āļĢāļ°āļāļąāļāļāļĨāļēāļ
āļāļāļāļēāļāļāļāļāļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļ āļēāļĐāļē C
āļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļ āļēāļĐāļē C āļāļđāļāđāļāđāļŦāļĨāļąāļāđ āđāļāļ·āđāļāļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđāļāļąāļāļāļĩāđ
- āļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāļāļēāļāļāļđāđāđāļāđ: āļāļđāđāđāļāđāļāđāļāļāļāļąāļ§āđāļĨāļāļŦāļĢāļ·āļāļŠāļāļĢāļīāļāļāļēāļāļāļāļāđāļāļĨ
- āļāļēāļĢāļāđāļēāļāđāļāļĨāđ: āļāļķāļāļāđāļāļĄāļđāļĨāļāļēāļāđāļāļĨāđāļ āļēāļĒāļāļāļāđāļāļ·āđāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
- āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāđāļĨāļ°āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨ: āļāļĢāļ§āļāļŠāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļāļāđāļĨāļ°āđāļāđāđāļ/āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļēāļĄāļāļ§āļēāļĄāļāļģāđāļāđāļ
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļ āđāļāļĢāđāļāļĢāļĄāļāļĩāđāļāļģāļāļ§āļāđāļāļĒāļāđāļēāļāļāļīāļāļāđāļēāļāļąāļ§āđāļĨāļāļāļĩāđāļāļđāđāđāļāđāļāđāļāļ āļŦāļĢāļ·āļāļĢāļ°āļāļāļāļĩāđāļāđāļēāļāļāđāļāļĄāļđāļĨāļĨāļđāļāļāđāļēāļāļēāļāđāļāļĨāđ
āļāļ§āļēāļĄāļŠāļģāļāļąāļāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļē
āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāļĄāļĩāļāļ§āļēāļĄāđāļāļĩāđāļĒāļ§āļāđāļāļāđāļāļĒāļāļĢāļāļāļąāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļ§āļēāļĄāļāđāļēāđāļāļ·āđāļāļāļ·āļāļāļāļāđāļāļĢāđāļāļĢāļĄ āđāļāļĒāļāđāļāļāđāļŦāđāļāļ§āļēāļĄāļŠāļģāļāļąāļāđāļāļāļĢāļ°āđāļāđāļāļāđāļāđāļāļāļĩāđ
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļ (Error Handling): āļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļāļāļēāļāļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāļāļīāļāļāļĨāļēāļāļŦāļĢāļ·āļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļĄāđāļāļēāļāļāļīāļāđāļāļ·āđāļāļāđāļāļāļāļąāļāļāļēāļĢāļĨāđāļĄāļāļāļāđāļāļĢāđāļāļĢāļĄ
- āļāļēāļĢāļĢāļąāļāļĐāļēāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒ: āđāļāđāļāļąāļāļāđāļāļąāļāļāļĩāđāļāļĨāļāļāļ āļąāļĒāđāļāļ·āđāļāļāđāļāļāļāļąāļāļāđāļāļāđāļŦāļ§āđ āđāļāđāļ Buffer Overflow
- āļāļēāļĢāļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒ: āļāļāļāđāļāļāđāļŦāđāļĒāļ·āļāļŦāļĒāļļāđāļāđāļāļ·āđāļāļĢāļāļāļĢāļąāļāļāđāļāļĄāļđāļĨāđāļāļĢāļđāļāđāļāļāļāđāļēāļāđ āđāļāđāļ āļāļąāļ§āđāļĨāļ āļŠāļāļĢāļīāļ āđāļĨāļ°āđāļāļĨāđ
āļ§āļąāļāļāļļāļāļĢāļ°āļŠāļāļāđāđāļĨāļ°āđāļāļ·āđāļāļŦāļēāļāļāļāļāļāļāļ§āļēāļĄ
āļāļāļāļ§āļēāļĄāļāļĩāđāļāļ°āļāļāļīāļāļēāļĒāļāļ·āđāļāļāļēāļāđāļĨāļ°āļāļēāļĢāļāļĢāļ°āļĒāļļāļāļāđāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāđāļāļ āļēāļĐāļē C āļāļēāļĄāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
- āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļ Standard Input āđāļĨāļ° Standard Output
- āļāļēāļĢāđāļāđāļāļąāļāļāđāļāļąāļāļāđāļāļāļāđāļāļĄāļđāļĨāļāļ·āđāļāļāļēāļāđāļĨāļ°āļāļēāļĢāļāļģāļāļķāļāļāļķāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒ
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāļāļąāđāļāļāļĢāļ°āļĒāļļāļāļāđāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļĨāđ
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļāđāļĨāļ°āļāļēāļĢāļĢāļāļāļĢāļąāļāļāļąāļāļāļĢāļ°āļŦāļĨāļēāļĒāđāļāļāđ
āļāļāļāļāļēāļāļāļĩāđāļāļ°āļĄāļĩāļāļąāļ§āļāļĒāđāļēāļāđāļāđāļāđāļāļīāļāļāļāļīāļāļąāļāļī āļāļĢāđāļāļĄāļāļāļīāļāļēāļĒāļ§āļīāļāļĩāđāļāđāļāļĒāđāļēāļāđāļāđāļāļĢāļđāļāļāļĢāļĢāļĄ
āļāļąāđāļāđāļāđāļēāđāļŦāđāļāļđāđāđāļĢāļīāđāļĄāļāđāļāđāļāđāļēāđāļāđāļāđāļāđāļēāļĒ āđāļĨāļ°āđāļāđāļāđāļāļ§āļāļēāļāļāļĢāļ°āļĒāļļāļāļāđāļŠāļģāļŦāļĢāļąāļāļāļđāđāļāļĩāđāļĄāļĩāļāļ·āđāļāļāļēāļāđāļĨāđāļ§
āļāļąāđāļāļāļāļāļāļąāļāđāļ
āđāļāļŦāļąāļ§āļāđāļāļāđāļāđāļ āđāļĢāļēāļāļ°āļāļāļīāļāļēāļĒāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļ·āđāļāļāļēāļāļāļāļ 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) āđāļāđāļĢāļ°āļāļļāļāļāļīāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļ°āļĢāļąāļāđāļāđāļēāļĄāļē āļāļąāļ§āļŦāļĨāļąāļāđ āļĄāļĩāļāļąāļāļāļĩāđ
āļāļąāļ§āļĢāļ°āļāļļ | āļāļāļīāļāļāđāļāļĄāļđāļĨ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
%d | int | āļāļģāļāļ§āļāđāļāđāļĄ |
%f | float | āļāļģāļāļ§āļāļāļĻāļāļīāļĒāļĄāđāļāļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļāļĩāđāļĒāļ§ |
%lf | double | āļāļģāļāļ§āļāļāļĻāļāļīāļĒāļĄāđāļāļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļāļđāđ |
%c | char | āļāļąāļāļāļĢāļ°āđāļāļĩāđāļĒāļ§ |
%s | char 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;
}
āļāļļāļāļŠāļģāļāļąāļāļāļāļāđāļāđāļ
- āļāļēāļĢāđāļāđ
setlocale
āđāļāļ·āđāļāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢāļ āļēāļĐāļēāļāļĩāđāļāļļāđāļāđāļāđāļāļĒāđāļēāļāļāļđāļāļāđāļāļ - āļāļēāļĢāđāļāđ
wchar_t
āđāļāļ·āđāļāđāļāđāļāļāđāļāļĄāļđāļĨāļāļąāļāļāļĢāļ°āļŦāļĨāļēāļĒāđāļāļāđ - āļāļēāļĢāđāļāđ
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;
}
āļāļļāļāļŠāļģāļāļąāļāļāļāļāđāļāđāļ
- āļāļēāļĢāļĨāļāļāļąāļāļāļĢāļ°āļāļķāđāļāļāļĢāļĢāļāļąāļāđāļŦāļĄāđ: āđāļāđ
strcspn
āđāļāļ·āđāļāđāļŦāđāļŠāļāļĢāļīāļāļŠāļ°āļāļēāļ - āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāđāļāļĄāļđāļĨ: āđāļāđāđāļāļ·āđāļāļāđāļāļāļĢāļ§āļāļŠāļāļāļ§āđāļēāļāđāļāļĄāļđāļĨāđāļāđāļāļāļ§āļāđāļĨāļ°āļāļĒāļđāđāđāļāļĢāļđāļāđāļāļāļāļĩāđāļāļđāļāļāđāļāļ
- āļāļēāļĢāļĨāđāļēāļāļāļąāļāđāļāļāļĢāđ: āļāđāļāļāļāļąāļāļāļąāļāļŦāļēāļāļēāļĢāļāđāļēāļāļāđāļāļĄāļđāļĨāļāļīāļāļāļĨāļēāļ
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;
}
āļāļļāļāļŠāļģāļāļąāļāļāļāļāđāļāđāļ
- āđāļāđ
fopen
āđāļĨāļ°fclose
āđāļāļ·āđāļāļāļąāļāļāļēāļĢāđāļāļĨāđāļāļĒāđāļēāļāļāļĨāļāļāļ āļąāļĒ - āđāļāđ
fscanf
āđāļāļ·āđāļāļāđāļēāļāļāđāļāļĄāļđāļĨāļŦāļĨāļēāļĒāļāļĢāļ°āđāļ āļāļāļēāļāđāļāļĨāđ - āļ§āļāļĨāļđāļāļāļāļāļķāļ 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;
}
āļāļļāļāļŠāļģāļāļąāļāļāļāļāđāļāđāļ
- āļāļąāđāļāļāđāļē Locale āđāļāļ·āđāļāļĢāļāļāļĢāļąāļāļ āļēāļĐāļēāļāļĩāđāļāļļāđāļ
- āđāļāđāļāļąāļāļāđāļāļąāļ Wide Character āđāļāđāļ
fgetws
āđāļĨāļ°fwprintf
- āļĨāļāļāļąāļāļāļĢāļ°āļāļķāđāļāļāļĢāļĢāļāļąāļāđāļŦāļĄāđāļāđāļāļāļāļąāļāļāļķāļāļāđāļāļĄāļđāļĨ
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 āļāļąāđāļāļāļāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāļāđāļāđāļ
āļŦāļĨāļąāļāļāļēāļāđāļāđāļēāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāđāļĨāđāļ§ āļāļļāļāļŠāļēāļĄāļēāļĢāļāļāđāļāļĒāļāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāđāļāđāļāļąāļāļāļĩāđ
- āļāļēāļĢāđāļāđ Array āđāļĨāļ° Pointer
- āđāļĢāļĩāļĒāļāļĢāļđāđāļāļēāļĢāļāļąāļāļāļēāļĢāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāđāļĨāļ°āļāļēāļĢāđāļāđ Array/Pointer āđāļāļāļēāļĢāļāļąāļāđāļāđāļāđāļĨāļ°āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨ
- āļāļēāļĢāđāļāđ Struct āđāļĨāļ°āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĨāđāļāļąāđāļāļŠāļđāļ
- āđāļāđ Struct āđāļāļ·āđāļāļāļąāļāļāļēāļĢāļāđāļāļĄāļđāļĨāļāļĩāđāļāļąāļāļāđāļāļāđāļĨāļ°āļāļąāļāļāļķāļ/āļāđāļēāļāļāđāļāļĄāļđāļĨāļāļēāļāđāļāļĨāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
- āļāļēāļĢāđāļĒāļāļāļąāļāļāđāļāļąāļāđāļĨāļ°āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļāđāļĄāļāļđāļĨ
- āļāļģāđāļŦāđāđāļāđāļāļāđāļēāļāļāđāļēāļĒāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļģāļāļĨāļąāļāļĄāļēāđāļāđāđāļŦāļĄāđāđāļāđ
- āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļāļāļąāđāļāļŠāļđāļ
- āđāļāļīāđāļĄāļĢāļ°āļāļāđāļāđāļāđāļāļ·āļāļāđāļĨāļ°āļāļąāļāļāļķāļāļāđāļāļāļīāļāļāļĨāļēāļāđāļāļ·āđāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļ§āļēāļĄāļāđāļēāđāļāļ·āđāļāļāļ·āļ
- āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļāļĄāļąāļĨāļāļīāđāļāļĢāļ
- āđāļāļīāđāļĄāļāļ§āļēāļĄāđāļĢāđāļ§āđāļĨāļ°āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨ
- āļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļąāļāļ āļēāļĐāļēāļāļ·āđāļāđāļĨāļ°āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļĢāļ·āļāļāđāļēāļĒ
- āļāļģāđāļŦāđāđāļāļĢāđāļāļĢāļĄāļŠāļēāļĄāļēāļĢāļāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāļĢāļ°āļāļāļāļ·āđāļāđāļĨāļ°āļĢāļāļāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļēāļāđāļāļĢāļ·āļāļāđāļēāļĒ
7.3 āļāļģāđāļāļ°āļāļģāļŠāļģāļŦāļĢāļąāļāļāļđāđāļāđāļēāļ
1. āļāļāļĨāļāļāđāļāļĩāļĒāļāđāļāđāļāļāđāļ§āļĒāļāļāđāļāļ
- āļāļģāļāļąāļ§āļāļĒāđāļēāļāđāļāļāļāļāļ§āļēāļĄāđāļāļĨāļāļāļĢāļąāļāđāļĨāļ°āļāļĢāļąāļāđāļāđ āđāļāļ·āđāļāđāļŦāđāđāļāđāļēāđāļāļāļēāļĢāļāļģāļāļēāļāļāļĢāļīāļ
2. āđāļāđāđāļāļāļŠāļēāļĢāļāđāļēāļāļāļīāļ
- āļĻāļķāļāļĐāļēāđāļāļāļŠāļēāļĢāļāļāļāđāļĨāļāļĢāļēāļĢāļĩāļĄāļēāļāļĢāļāļēāļ C āđāļāļ·āđāļāļŦāļēāļ§āļīāļāļĩāđāļāđāļāļąāļāļŦāļēāđāļĄāļ·āđāļāđāļāļāļāđāļāļŠāļāļŠāļąāļĒ
3. āđāļĢāļīāđāļĄāļāļēāļāđāļāļĢāđāļāļĢāļĄāđāļĨāđāļ
- āļāļķāļāļāļēāļāđāļāļĢāđāļāļĢāļĄāļāđāļēāļĒāđ āđāļĨāđāļ§āļāđāļāļĒāđ āđāļāļīāđāļĄāļāļ§āļēāļĄāļāļąāļāļāđāļāļ
4. āļāļĒāđāļēāļāļĨāļąāļ§āļāđāļāļāļīāļāļāļĨāļēāļ
- āđāļāđāļāđāļāļāļīāļāļāļĨāļēāļāđāļāđāļāđāļāļāļēāļŠāđāļāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāđāļĨāļ°āļāļąāļāļāļē
7.4 āļāļāļŠāđāļāļāđāļēāļĒ
āļāļāļāļ§āļēāļĄāļāļĩāđāđāļāđāļāļāļīāļāļēāļĒāđāļāļāļāļīāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāļāļģāđāļāđāļēāđāļāļ āļēāļĐāļē C āļāļąāđāļāđāļāđāļāļąāđāļāļāļ·āđāļāļāļēāļāđāļāļāļāļāļķāļāļāļąāđāļāļāļĢāļ°āļĒāļļāļāļāđ āļāļĢāđāļāļĄāļāļąāđāļāļāļēāļĢāļāđāļāļāļāļąāļāļāđāļāļāļīāļāļāļĨāļēāļāđāļĨāļ°āļāļēāļĢāļĢāļāļāļĢāļąāļāļŦāļĨāļēāļĒāļ āļēāļĐāļē
āļ āļēāļĐāļē C āđāļāđāļāļ āļēāļĐāļēāļāļĩāđāđāļĢāļĩāļĒāļāļāđāļēāļĒāđāļāđāļāļĢāļāļāļĨāļąāļ āļŦāļēāļāļāļķāļāļāļāļāļĒāđāļēāļāļāđāļāđāļāļ·āđāļāļ āļāļļāļāļāļ°āļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļĩāđāļāļąāļāļāđāļāļāđāļĨāļ°āļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļāđ
āļāļģāļāļ§āļēāļĄāļĢāļđāđāļāļĩāđāđāļāđāđāļāļāļāļĨāļāļāđāļāđāļāļēāļāļāļĢāļīāļ āđāļĨāļ°āļāđāļāļĒāļāļāđāļāļŠāļđāđāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒāļĄāļēāļāļāļķāđāļ