C언어02_주요함수

3 minute read

이 게시물은
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
    • 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 메모리에서 공간을 사용 해제