1ν•™λ…„ (2023)/C μ–Έμ–΄

[C] scanf μ‚¬μš©λ²•

waterproof 2023. 7. 8. 01:56

 

 

 

C μ–Έμ–΄μ—μ„œ scanf ν•¨μˆ˜λŠ” ν‘œμ€€ μž…λ ₯μœΌλ‘œλΆ€ν„° 값을 μ½μ–΄μ™€μ„œ λ³€μˆ˜μ— μ €μž₯ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

scanf ν•¨μˆ˜μ˜ 기본적인 μ‚¬μš©λ²•μ€ λ‹€μŒκ³Ό κ°™λ‹€:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
int main() {
    // λ³€μˆ˜ μ„ μ–Έ
    int num;
    float floatValue;
    char character;
    
    // κ°’ μž…λ ₯ λ°›κΈ°
    printf("μ •μˆ˜ μž…λ ₯: ");
    scanf("%d"&num);
 
    printf("μ‹€μˆ˜ μž…λ ₯: ");
    scanf("%f"&floatValue);
 
    printf("문자 μž…λ ₯: ");
    scanf(" %c"&character);
 
    // μž…λ ₯받은 κ°’ μΆœλ ₯
    printf("μž…λ ₯된 κ°’λ“€:\n");
    printf("μ •μˆ˜: %d\n", num);
    printf("μ‹€μˆ˜: %f\n", floatValue);
    printf("문자: %c\n", character);
 
    return 0;
}
cs

 

μœ„μ˜ μ˜ˆμ œμ—μ„œ scanf ν•¨μˆ˜λŠ” 각각 μ •μˆ˜, μ‹€μˆ˜, 문자λ₯Ό μž…λ ₯λ°›μ•„ λ³€μˆ˜μ— μ €μž₯ν•˜κ³  좜λ ₯ν•˜λŠ” κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€.

scanf ν•¨μˆ˜λŠ” ν˜•μ‹ μ§€μ •μžλ₯Ό μ‚¬μš©ν•˜μ—¬ 값을 μž…λ ₯받을 λ³€μˆ˜μ˜ νƒ€μž…μ„ μ§€μ •ν•œλ‹€. 일반적으둜 %dλŠ” μ •μˆ˜, %fλŠ” μ‹€μˆ˜, %cλŠ” 문자λ₯Ό μž…λ ₯λ°›λŠ” 데 μ‚¬μš©λœλ‹€. %d, %f, %c λ“± ν˜•μ‹ μ§€μ •μžλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” ν•΄λ‹Ή λ³€μˆ˜μ˜ μ£Όμ†Œ(&)λ₯Ό ν•¨κ»˜ 전달해야 ν•œλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ scanf ν•¨μˆ˜κ°€ μž…λ ₯받은 값을 ν•΄λ‹Ή λ³€μˆ˜μ˜ λ©”λͺ¨λ¦¬ μœ„μΉ˜μ— μ €μž₯ν•  수 μžˆλ‹€.

μ£Όμ˜ν•  점:

  • scanf ν•¨μˆ˜λŠ” μ‚¬μš©μžμ˜ μž…λ ₯을 기닀리닀가 μž…λ ₯을 받을 λ•ŒκΉŒμ§€ 싀행이 λ©ˆμΆ˜λ‹€.
  • μž…λ ₯받을 값듀은 κ³΅λ°±μ΄λ‚˜ κ°œν–‰ 문자둜 ꡬ뢄될 수 μžˆλ‹€.
  • 문자λ₯Ό μž…λ ₯받을 λ•Œ %c ν˜•μ‹ μ§€μ •μžλ₯Ό μ‚¬μš©ν•˜λ©΄ 이전에 μž…λ ₯받은 κ°œν–‰ λ¬Έμžλ‚˜ 곡백을 버리지 μ•Šκ³  읽어듀인닀. λ”°λΌμ„œ %c μ•žμ— 곡백(' ')을 λ„£μ–΄μ£Όλ©΄ 버퍼에 λ‚¨μ•„μžˆλŠ” κ°œν–‰ λ¬Έμžλ‚˜ 곡백을 λ¬΄μ‹œν•  수 μžˆλ‹€.

 

μΆ”κ°€μ μœΌλ‘œ, scanf ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ€ μ„±κ³΅μ μœΌλ‘œ μž…λ ₯받은 λ³€μˆ˜μ˜ 개수λ₯Ό λ‚˜νƒ€λ‚΄λ©°, 보톡은 이 값을 ν™•μΈν•˜μ—¬ μž…λ ₯이 μ˜¬λ°”λ₯΄κ²Œ μ΄λ£¨μ–΄μ‘ŒλŠ”μ§€ 검사할 수 μžˆλ‹€.