/ C, PROGRAMMING

C언어: 연산자, 함수 모음

연산자

연산자 sizeof() : 변수나 자료형, 상수(리터럴)의 메모리 크기를 바이트 단위로 계산(함수처럼 생겼지만 사실 연산자다.)

조건 연산자: 피연산자가 세 개인 ‘삼 항 연산자’

(num1>num2) ? num1 : num2

-> num1>num2 만족 시, num1이 연산 결과이며, 그밖에는 num2가 연산 결과

함수

get_int() - prompt a user for an int

문자 관련

getch() : 버퍼 미사용, 한 글자 입력받음, 화면 미표시, 종료 \r (엔터를 \r로 인식)

getche() : getch()와 유사하나 화면에 입력값이 표시됨.

getchar() : 버퍼 사용, 한 글자 입력받음, 화면 표시, 종료 \n

int getc(FILE *stream);

argument로 전달된 스트림(stream)에서 문자 하나를 읽어 그 값을 리턴한다.

getchar가 주로 파일의 끝에 도달하거나 하여 더 이상 input을 받을 수 없을 때,

매크로 EOF를 리턴한다.

putchar(char): 한 글자 출력

ctype.h

toupper(char): 대문자화 (ctype.h)

isalpha(char): 알파벳인지 체크 (ctype.h)

isspace(char): 공백 문자인지 체크 (ctype.h)


문자열 관련

memcpy(복사될 주소, 복사할 값이 있는 주소, 복사될 크기);

-> 메모리 단위 (값을) 복사 (string.h)

puts(char*) : 문자열 출력 (자동 줄바꿈)

gets(char*) : 문자열 입력

  • 줄바꿈 문자를 제외한 공백 문자를 스킵하지 않는다.

  • 줄바꿈 문자 입력 시 종료되며 줄바꿈 문자는 null 문자로 대체 된다.

sprintf() 함수

변수를 문자열 내 삽입할 때 유용

문법

sprintf(버퍼 문자열의 시작 주소, 문자열,매개 변수)`;

ex)

sprintf(str,"%2d",num)

-> 정수 num%2d Format String을 통해 그 숫자를 문자열의 형태로 바꿔서 str이 가리키는 주소에 저장한다.

sprintf_s(버퍼문자열의 시작 주소,버퍼의 크기, 문자열,매개 변수);

stdlib.h

Dynamic Storage Allocation

srand(시드):랜덤 시드 설정 (stdlib.h) (main 함수에서만 사용할 것)

rand():랜덤한 정수 반환 (stdlib.h)

int atoi(const char *nptr) : 문자열을 정수로 변환 (stdlib.h)

exit(int) : main 함수에서의 return statement 와 동일 (stdlib.h)

단, main 함수가 아닌 함수에서도 호출 시 무조건 프로그램이 종료된다.

EXIT_SUCCESS, EXIT_FAILURE 사용 가능

long int strtol (const char* str, char** endptr, int base);
  • 문자열 strlong int로 변환

  • 진법은 base → (0 또는 2 ~ 36)

    • base 가 0일 때에는 문자를 정수 상수와 비슷하게 해석하여 다음 규칙을 따른다.

      • An optional sign character (+ or ``)

      • An optional prefix indicating octal or hexadecimal base ("0" or "0x"/"0X" respectively)

      • A sequence of decimal digits (if no base prefix was specified) or either octal or hexadecimal digits if a specific prefix is present

    • base 가 16일 때에는 문자열에 0x 또는 0X prefix도 사용 가능하다.

  • endptr : NULL 로 전달하면 아무 의미가 없으며, 그렇지 않을 경우 endptr 가 가리키는 포인터는 str 에서 숫자가 아닌 첫 문자의 위치를 가리켜야 한다.

qsort

math.h

fabs(double) : double 값의 절댓값 반환(math.h)

abs(int) : 정수 절댓값 반환 (math.h)

pow(double x, double y) : 실수 거듭제곱 반환(math.h)


time():현재 시각 반환 (time.h)

(unsigned) time(NULL) 과 같이 사용

read(int fildes, char* buffer, size_t nbyte)

특정 파일에서 문자열을 읽어들여 buffer에 저장한다.

현재 파일 포인터 + fildes로 전달되는 오프셋에서부터 읽어들인다.

주의) read 함수는 입력받을 때 널 바이트와 같은 별도의 구분자를 붙이지 않습니다.

memset(void* str, int c, size_t n)

The C library function void *memset(void *str, int c, size_t n) copies the character c (an unsigned char) to the first n characters of the string pointed to, by the argument str.

(주로 배열로써 초기화가 불가능한 malloc과 함께 사용)

void * memset ( void * ptr, int value, size_t num );
  • ptr: 채우고자 하는 메모리의 시작 포인터(시작 주소)

  • value: 메모리에 채우고자하는 값. int형이지만 내부에서는 unsigned char(1 byte)로 변환되어서 저장된다.

  • num: 채우고자 하는 바이트의 수. 즉, 채우고자 하는 메모리의 크기


assert - assert 매크로는 assert.h 헤더 파일에 정의되어 있으며 정해진 조건에 맞지 않을 때 프로그램을 중단합니다. 즉, assert에 지정한 조건식이 거짓(false)일 때 프로그램을 중단하며 참(true)일 때는 프로그램이 계속 실행합니다.