C언어 22

[C언어] AIX 서버에서 char 타입 사용 시 반드시 주의할 점

C 개발을 하다 보면 char 타입의 변수로 return 값을 받을 일이 생긴다. 예를 들면 아래와 같은 코드다.#include char testFunction() { char ret; ... if(err > 0) { return -1; } return ret;}int main() { char a; a = testFunction(); if(a == -1) { printf("Error !!\n"); } return 0;} 겉보기에는 아무 문제없어 보이지만 AIX 서버에서 위의 코드를 실행하면 엄청난 문제가 발생한다. C는 기본으로 변수 타입을 선언하면 signed로 선언이 되며 이는 생략가능하다고 본능적(?)으로 알고 있을 것이다. 하지만 AIX 서버는 char 타입에 대해..

[C언어] abs 함수 (정수의 절대값 구하기)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 입력받은 정수의 절대값을 계산하기 위해 사용한다. 헤더 #include ※ 함수 사용시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 int abs(int n); 파라미터 int n 절대값을 구할 정수를 입력한다. 반환값 성공시 인자로 전달한 정수 n의 절대값을 반환한다. 오류 반환값이 없다. 잡학지식 abs 함수는 전달 받은 정수 n의 절대값을 반환하는 함수이다. 하지만 int는 대부분의 환경에서 크기 4byte를 가지기에 표현할 수 있는 범위의 한계가 존재한다. (부호비트 포함) int와 long은 무엇이 다를까? [C언어] int 와 long 은 무엇이 ..

C언어/stdlib.h 2023.03.29
[C언어] free 함수 (heap 메모리 해제)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 할당받은 동적메모리(Heap Memory)를 해제하기 위해 사용한다. 헤더 #include ※ 함수 사용시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 void free(void* memory); 파라미터 void* memory malloc, calloc, realloc 과 같은 함수를 통해 할당받은 heap memory 주소를 입력한다. NULL 을 넣어도 문제는 없다. (malloc, calloc, realloc 함수의 경우 실패 시 NULL이 반환된다) 반환값 free 함수는 반환값이 없지만 정상적인 경우 heap memory가 반환된다. 만약 실패시 ..

C언어/stdlib.h 2023.03.26
[C언어] calloc 함수 (초기화된 heap 메모리 할당)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 초기화된 동적메모리(Heap Memory) 할당을 받기 위해 사용한다. 헤더 #include ※ 함수 사용 시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 void* calloc(size_t NumOfElements, size_t SizeOfElements); 파라미터 size_t NumOfElements 메모리를 할당할 elements(요소)의 수 (※ 동적메모리 할당받는 변수의 배열 크기를 입력하며, 배열이 아닐 경우 1을 입력한다.) size_t SizeOfElements 메모리를 할당할 elements(요소)의 크기 (※ 동적메모리 할당받는 변수 ty..

C언어/stdlib.h 2023.03.02
[C언어] malloc 함수 (heap 메모리 할당)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 동적메모리(Heap Memory) 할당을 받기 위해 사용한다. 헤더 #include ※ 함수 사용 시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※ 함수 void* malloc(size_t size); 파라미터 size_t size malloc 함수를 통해 할당받을 memory의 크기를 입력한다. 반환값 성공 시 유효한 포인터 주소를 반환한다. 실패 시 NULL을 반환한다. Memory 가 부족한 경우 malloc 함수가 실패할 수 있다. 추가로 Memory가 남아있지만 지속적인 메모리 할당 & 해제를 반복하다 보면 내부적으로 메모리가 파편화되어 용량이 남아있어도 ..

C언어/stdlib.h 2023.03.01
[C언어] abort 함수 (프로그램 중단, 비정상 종료)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 SIGABRT 시그널을 발생시켜 프로그램의 비정상 종료를 의도한다. 헤더 #include ※ 함수 사용시 stdlib.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※ 함수 void abort(); 파라미터 void 반환값 없음 (void) 잡학지식 abort 함수는 프로그램을 강제종료하는 함수라고 생각하면 된다. 따라서 24시간 서비스를 제공해야하는 프로그램이거나 예외처리를 하는 방향에서는 사용하면 안된다. abort 함수는 보통 프로그램을 테스트하는데 자주 사용하며, 유닛테스트(unittest) 에서 활용하는것을 자주 볼 수 있다. SIGABRT 시그널을 발생시켜서 프로그램을 종..

C언어/stdlib.h 2023.03.01
[C언어] fseek 함수 (stdio.h, 파일 stream 오프셋 변경)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 파일 stream 의 오프셋을 변경한다. 헤더 #include ※ fseek 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※ 함수 int fseek(FILE* file, long offset, int origin); 파라미터 FILE* file fopen 함수를 통해 열린 file stream을 입력한다. long offset origin 에 설정된 위치를 기준으로 이동할 file stream의 오프셋을 입력한다. int origin file stream 이 이동할 기준점을 아래에 정의된 매크로를 사용하여 입력한다. 정의된 매크로 값 의미 SEEK_SET 0..

C언어/stdio.h 2022.08.31
[C언어] freopen 함수 (stdio.h)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 이미 열고있는 FILE 을 다른 FILE 로 변경하거나 접근방식(mode) 를 변경한다. 헤더 #include ※ freopen 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※ 함수 FILE* freopen(const char* filename, const char* mode, FILE* file); 파라미터 const char* filename 새로 open 할 파일의 이름과 경로를 입력한다. 파일의 이름만 입력시 상대경로로 접근한다. const char* mode 첫번째 파라미터인 filename 에 접근할 방식을 입력한다. mode 와 관련된 정보는 f..

C언어/stdio.h 2022.08.26
[C언어] fscanf 함수 (stdio.h)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 scanf 함수와 동일하지만 표준 입력(stdin)이 아닌 FILE 로부터 데이터를 받아서 저장한다. 헤더 #include ※ fscanf 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※ 함수 int fscanf(FILE* file, const char* format, ...); 파라미터 FILE* file fopen 함수를 통해 얻은 FILE의 포인터를 입력한다. const char* format 문자열 (string) 형태로 fscanf 함수를 통해 입력받을 데이터의 서식을 입력한다. 서식 지정자 참고 ... C언어의 가변인자로 입력되는 파라미터의 개수를..

C언어/stdio.h 2022.08.11
[C언어] sscanf 함수 (stdio.h)

사용범위 Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수 기능 C언어 표준 함수로 scanf 함수와 동일하지만 표준 입력(stdin)이 아닌 string 버퍼로부터 데이터를 받아서 저장한다. 헤더 #include ※ sscanf 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※ 함수 int sscanf(const char* buffer, const char* format, ...); 파라미터 const char* buffer sscanf 함수가 입력받을 데이터의 문자열 (string) 버퍼를 입력한다. const char* format 문자열 (string) 형태로 sscanf 함수를 통해 입력받을 데이터의 서식을 입력한다. 서식 지정자 참..

C언어/stdio.h 2022.08.09
반응형