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
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);
-
문자열
str
을long 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
에서 숫자가 아닌 첫 문자의 위치를 가리켜야 한다.
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 characterc
(anunsigned 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)일 때는 프로그램이 계속 실행합니다.