본문 바로가기
C

문자열 입출력 라이브러리

by KWONE 2024. 6. 25.
int scanf("%s",s)		//문자열을 읽어서 문자배열 s[]에 저장
int printf("%s",s)		//배열 s[]에 저장되어 있는 문자열을 출력한다.
char *gets_s(char *s, int size)	//한 줄의 문자열을 읽어서 문자 배열 s[]에 저장한다.
int puts(const char *s)		//배열 s[]에 저장되어 있는 한 줄의 문자열을 출력한다.

 

gets_s(), puts()

char buf[100];
gets_s(buf,100);//한 줄 입력받는다.
puts(buf);	//한 줄 출력한다.

gets_s()는 표준 입력에서 엔터키, 즉 줄바꿈 문자('\n')이 나올때 까지 한 줄 전체를 문자열로 입력받는다. 

문자열에 줄바꿈 문자 ('\n')는 포함되지 않으며 자동으로 NULL문자 ('\0')를 추가한다. 

scanf()와 달리 문자열 입력에 있어 띄어쓰기가 있더라도 엔터가 입력되기 전까지 한 줄의 문장을 전부 입력받는다.

입력받은 문자열을 buf가 가리키는 주소에 저장된다. 성공하면 인수buf 반환하지만, 실패하면 NULL값을 반환한다.

ab cd\n ---> ab cd\0

puts()는 배열에서 문자열 받아서 출력하는 함수이다. 문자열 끝에 있는 NULL문자 ('\0')는 줄바꿈 문자 ('\n')로 변경된다.

출력을 성공하면 음수가 아닌값이 반환되고, 실패하였으면 EOF가 반환된다.

ab cd\0 ---> ab cd\n

 

##참고사항##

주의할 점은 gets_s()는 인수로 전달된 메모리 공간에 문자열을 저장한다. 따라서 반드시 유효한 메모리 주소를 전달하여야 한다. 다음 문장은 p가 초기화되지 않아서 p가 유효한 메모리 공간을 가리키고 있지 않다.

char *p;	//p가 가리키는 주소가 없다, 초기화 되지 않음
gets_s(p,1); 	//오류!

 

'C' 카테고리의 다른 글

2차원 공간상에서의 평행이동 (typedef 활용)  (0) 2024.06.30
문자열 처리 라이브러리 함수  (0) 2024.06.27
문자 입출력 라이브러리  (0) 2024.06.25
문자열 기본 개념 및 활용  (0) 2024.06.24
날짜 구현  (0) 2024.06.23