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또는0Xprefix도 사용 가능하다.
-
-
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)일 때는 프로그램이 계속 실행합니다.