목록Programming (115)
Nagie's DevStory
malloc()과 free()는 C에서 동적 메모리 할당과 해제를 위해 사용되는 함수이다. malloc() 함수의 원형은 아래와 같다. #include void* malloc(size_t size); malloc()을 사용하기 전 반드시 표준 라이브러리 헤더(stdlib.h)를 포함해야 하며 해당 헤더를 포함하지 않으면 malloc()을 사용할 수 없다. malloc()은 반환 형식이 void 포인터(void*) 형태라 사용하기 전 적절히 형 변환(TypeCasting)을 해줘야 한다. malloc()의 인수 size_t size 부분은 바이트 용량을 의미하며 자료형에 따라 바이트 수를 다르게 입력해 줘야 한다. 실사용 예시는 아래와 같다. int* dynamicArray = (int*)malloc(5 ..
C언어를 공부하면서 블로그에 글을 남긴 지 대략 한 달 정도 된 거 같다. 중간중간 포스팅을 빼먹기도 했지만, 공부를 게을리하지는 않았고 나름 내 방식대로 쉽게 접근하려고 배운 것과 다르게 풀어서 해석한 글들도 있다. 내가 배운 걸 그대로 머릿속에 저장만 해놓는 게 아닌 남에게 설명한다는 걸 전재로 글을 적으면 공부한 게 상대적으로 덜 휘발되지 않을까? 하는 생각으로 시작된 포스팅이었는데 무사히 끝내서 뿌듯하다. p.s 이 글들을 누가 볼지는 모르겠지만 C언어를 공부한다는 목적을 가졌다면 포기하지 말고 완주하길 기원하며 글을 마친다.
마지막으로 알아볼 파일 입출력 함수는 fseek()이다. 파일 입출력을 다루면서 보안 결함이 해결된 함수를 사용하지 않았더니 VS2022에서 SDL로 인한 문제가 생겨 컴파일이 안 되는 문제를 확인했다. 해당 문제를 해결하려면 IDE 세팅에서 SDL 검사를 끄거나 아래의 코드처럼 소스 코드 최상단에 전처리를 해주면 해결된다. #define _CRT_SECURE_NO_WARNINGS 사전 준비가 끝났다면 파일 포인터를 다뤄 파일의 위치를 자유자재로 접근할 수 있는 fseek()에 대해 알아보자. 다음은 fseek() 함수의 원형이다. int fseek(FILE *stream, long int offset, int origin); 첫 인수로 파일 포인터를 받고 두 번째 인수는 이동할 위치를 받는다. 바이트 ..
앞서 텍스트 파일 전용 함수들을 알아봤으니, 마지막으로 바이너리(이진) 파일 전용 함수들을 알아보자 바이너리(이진) 파일 전용 함수는 아래와 같다. //바이너리 (이진) 파일 전용 함수 size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); size_t fread(void* buffer, size_t size, size_t count, FILE* stream); 1. fwrite fwrite는 바이너리(이진) 데이터를 파일에 저장하는데 사용된다. 이 함수는 데이터 버퍼와 각 데이터의 크기 데이터의 개수 그리고 파일 포인터를 인수로 받으며 fwrite는 파일에 데이터를 저장한 수 저장할 때 쓴 바이트의 수를 반환한다. 다음은 ..
앞서 파일 형식과는 무관하게 사용되는 함수들을 알아봤다. 이번엔 텍스트 파일 전용 함수들에 대해 알아볼 차례이며 텍스트 파일 전용 함수들은 아래와 같다. //텍스트 파일 전용함수 int fgetc(FILE* stream); int fputc(int c, FILE* stream); char* fgets(char* string, int n, FILE* stream); int fputs(const char* string,FILE* stream); 1. fgetc fgetc는 파일에서 한 문자씩 읽어올 때 사용하는 함수다. 이 함수는 파일 포인터를 인자로 받아 해당 파일에서 한 문자씩 읽어온다. 다음은 fgetc의 사용 예시이다. 우선 sample.txt 파일에 다음과 같은 내용이 있다고 가정을 한다. Hell..