이 게시물은
https://blog.naver.com/PostView.nhn?blogId=2000pansung&logNo=222157691040&redirect=Dlog&widgetTypeCall=true&directAccess=false
글을 보고 공부하며 작성한 글 입니다.
01. stdio.h
stdio.h
는 표준 입출력 라이브러리이다.
- 여러 형태의 입출력 삼수, 파일 관련 함수, 매크로 정의, 상수 등의 함수들이 포함되어있다.
- 표준스트림? : 컴푸터 프로그램과 그 환경(모니터, 키보드…) 사이에 미리 연결된 입출력 통로.
- stdin : 입력을 위한 스트림
- stdout : 출력을 위한 스트림
- stderr : 오류메시지를 출력하기 위한 스트림
형식이 있는 입출력 함수
함수 |
설명 |
printf |
출력 함수 |
scanf |
입력 함수 |
fprintf |
형식있는 데이터를 스트림에 쓴다. |
fscanf |
형식있는 데이터를 스트림에서 읽는다. |
sprintf |
문자열에 형식있는 데이터를 쓴다. |
sscanf |
문자열에 형식있는 데이터를 읽는다 |
문자열 입출력 함수
함수 |
설명 |
fgetc |
스트림에서 문자를 받는다.(file + get + character) |
fgets |
스트림에서 문자열을 받는다.(file + get + string, stream) |
fputc |
스트림에 문자를 쓴다.(file + put + character) |
fputs |
스트림에 문자열을 쓴다.(file + put string, stream) |
getc |
스트림에서 문자를 받는다. |
getchar |
표준입력에서 문자를 받는다. |
gets |
표준입력에서 문자열을 받는다. |
putc |
스트림에 문자를 쓴다. = (모니터로 문자열 출력.) |
putchar |
표준출력에 문자를 쓴다. |
puts |
표준출력에 문자열을 쓴다. |
ungetc |
스트림으로부터 문자를 되돌린다. |
- 문자열 단위 출력 함수 (puts, fputs)
- 모니터로 문자열 출력시 사용
- puts
- 출력스트림 stdout으로 지정
- 자동으로 개행이 이루어진다.
- fputs
- 출력스트림 선택가능 (모니터,파일)
- 자동으로 개행이 이루어지지 않음
- 문자열 단위 입력 함수 (gets, fgets)
- 키보드로부터 문자열을 입력받을 때 사용.
- scanf와의 차이점은 scanf는 공백을 포함하는 문자열에 제한이 있으나, 공백이 포함되어도 제한 없음.
- gets
- 출력스트림 stdin으로 지정되어있음.
- 구성은 간단하지만 미리 지정한 배열을 넘어가는 길이의 문자열 입력시 오류 발생.
- fgets
- 출력스트림 선택가능 (모니터,파일)
- 문자열을 저장할 포인터(버퍼)와 최대 길이, 입력 스트림을 지정
- 배열 길이 문제를 방지하기 위해 가급적 fgets함수를 호출하는 것이 좋다.
02. string.h
- 문자열 검색, 복사, 비교함수, 메모리블럭 함수 포함
- 문자열은 n+1요소의 배열로 표현되며, 끝은 NUL문자로 끝이 난다.
문자열 검색 함수
함수 |
설명 |
memchr |
메모리 블록에서 특정한 문자를 찾는다. |
strchr |
문자열에서 특정한 문자를 찾아 그 위치를 구한다. |
strcspn |
특정 문자열의 문자들을 다른 문자열에서 찾아 가장 먼저 것을 구한다. |
strpbrk |
특정 문자열의 문자들을 다른 문자열에서 찾아 일치되는 것을 가리킨다. |
strrchr |
문자열에서 특정한 문자를 찾되, 뒤에서부터 찾는다. |
strspn |
특정 문자열의 다른 문자열에 포함 부분을 찾되, 연속된 부분으로 구한다. |
strstr |
특정한 문자열을 다른 문자열에서 검색한다. |
strtok |
문자열을 토큰으로 분리한다. |
문자열 비교 함수
함수 |
설명 |
memcmp |
메모리의 두 부분을 비교한다. |
strcmp |
두 개의 문자열을 비교한다. |
strcoll |
locale을 이용하여 두 개의 문자열을 비교한다. |
strncmp |
두 개의 문자열의 일부분을 비교한다. |
strxfrm |
locale을 이용하여 문자열을 변환한다. |
#include <stdio.h>
#include <string.h>
int main(void){
char str1[] = "My String";
char str2[] = "My String";
if(str1 == str2)
puts("Equal");
else
pust("Not Equal");
return 0;
}
str1 == str2
는 문자열의 내용이 일치하는지 비교하는 것이 아니라 주소값을 비교하기 때문에 false이다.
- 내용을 비교하기 위해서는 strcmp 또는 strncmp를 사용해야한다.
- 아스키값을 기준으로 str1이 더 크면 양수 값 반환, str2가 더 크면 음수 값 반환, 내용이 일치하면 0을 반환한다.
문자열 복사 함수
함수 |
설명 |
memcpy |
메모리의 특정한 블록을 복사한다. |
memmove |
메모리의 특정한 블록을 이동시킨다. |
strcpy |
문자열을 복사한다. |
strncpy |
문자열에서 지정한 부분만큼 복사한다. |
- strcpy
- strncpy
- strncpy(복사 받는 문자열, 복사할 문자열, 복사받는 문자열의 길이)
문자열 합치는 함수
함수 |
설명 |
strcat |
두 개의 문자열을 합친다. 덧붙임이 시작되는 위치는 NULL문자뒤가 아닌 NULL문자 위치이다. |
strncat |
두 개의 문자열을 지정한 부분만큼 합친다. |
기타함수
함수 |
설명 |
strlen |
문자열의 길이를 잰다. |
memstrset |
메모리 블록을 채운다. |
strerror |
오류메시지 문자열을 가리키는 포인터를 구한다. |
03. time.h
시간관련 함수
함수 |
설명 |
clock |
시계 프로그램 |
difftime |
두 시간의 차이를 구함 |
mktime |
tm 구조체를 time_t로 바꿈 |
time |
현재 시간을 구함 |
변환관련 함수
함수 |
설명 |
asctime |
tm 구조체를 문자열로 바꾼다. |
ctime |
time_t값을 문자열로 바꾼다. |
gmtime |
time_t를 UTC시간으로 하여 tm으로 바꿈. |
localtime |
time_t를 현지시간으로 하여 tm으로 바꿈 |
strftime |
특정한 형식(사용자가 지정한 형식의 문자열)으로 시간을 출력 |
타입함수
함수 |
설명 |
time_t형 |
시간 타입 |
struct tm |
시간 구조체 |
clock_t |
clock타입 |
size_t |
부호없는 정수형 |
04. stdlib.h
- 동적할당 관련 함수, 난수 생성 함수, 정수의 연산 함수, 검색 및 정렬함수 등이 포함되어 있는 표준라이브러리이다.
문자열 반환 함수
함수 |
설명 |
atof |
문자열을 double로 변환 |
atoi |
문자열을 정수형으로 변환 |
atol |
문자열을 long형 정수로 변환 |
난수생성 함수
함수 |
설명 |
rand |
난수를 생성한다. |
srand |
난수 생성을 위한 초기값 설정 |
동적할당 관련 함수
함수 |
설명 |
malloc |
메모리에서 공간 할당 |
free |
메모리에서 공간을 사용 해제 |