π•ƒπ•¦π•„π•šπ•£

γ€ŒβŒ¨οΈα΄„s」STUDY/C

[C][header][stdio.h] fgets

by λ£¨λ°€π•ƒπ•¦π•„π•šπ•£2023. 1. 23.
728x90
λ°˜μ‘ν˜•

fgets

ν•¨μˆ˜ μ›ν˜•
#include <stdio.h>  // C++ 의 경우 <cstdio>
char* fgets(char* str, int num, FILE* stream);
νŠΉμ§•

1. κ°œν–‰(=newline)(='\n') ν˜Ήμ€ 파일끝(=EOF)을 λ§Œλ‚  λ•Œ κΉŒμ§€, ν•΄λ‹Ή stream의 bufferμ—μ„œ λ¬Έμžμ—΄μ„ 읽어듀인닀.

(κ°œν–‰(=newline)(='\n') ν˜Ήμ€ 파일끝(=EOF)을 λ§Œλ‚˜λ©΄, μž…λ ₯이 μ’…λ£Œλœλ‹€.)

2. λ¬Έμžμ—΄μ„ 읽어듀인 ν›„, λ¬Έμžμ—΄ 끝에 NULL(='\0')값이 μžλ™μœΌλ‘œ μΆ”κ°€λœλ‹€.

3. fgetsλŠ” gets와 달리, κ°œν–‰(=newline)(='\n')이 ν¬ν•¨λœμ±„ μ €μž₯λœλ‹€.

 

λ°˜ν™˜κ°’

[μ„±κ³΅μ μœΌλ‘œ 읽어 λ“€μ˜€μ„ 경우.]

str을 λ°˜ν™˜ν•œλ‹€. 즉, λ°˜ν™˜κ°’μ€ 인자둜 전달받은 λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œμ΄λ‹€.

[파일 λμ—μ„œ μ•„λ¬΄λŸ° 문자λ₯Ό 읽어 듀이지 μ•Šμ•˜μ„ 경우. & 였λ₯˜κ°€ λ°œμƒν–ˆμ„ 경우.]

NULL(='\0') 포인터λ₯Ό λ°˜ν™˜ν•œλ‹€. (str의 λ‚΄μš©μ€ λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€.)

 

fgetsλ₯Ό ν†΅ν•΄μ„œ 데이터 μž…λ ₯을 λ°›λŠ” 경우, 뒀에 κ°œν–‰λ¬Έμžλ₯Ό μ œκ±°ν•˜λŠ” 방법
#include <stdio.h> //fgets()
#include <string.h> //strlen()

fgets(str, strlen(str), stdin);
if(str[strlen(str) - 1] == '\n')
	str[strlen(str) - 1] = '\0';

 

728x90
λ°˜μ‘ν˜•

'γ€ŒβŒ¨οΈα΄„s」STUDY > C' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[C][Macro] min max  (0) 2023.02.21
[C][header][stdio.h] printf  (0) 2023.01.31
[C][header][stdio.h] scanf  (0) 2023.01.29
[C][header][limits.h]  (0) 2023.01.23