본문 바로가기

분류 전체보기

(109)
strtok를 연속 호출하면 인자에 NULL을 넣는다. strtok 함수는 문자열을 특정 구분자(이 경우 공백 " ")로 분리하는 데 사용되며, 토큰화 작업을 수행하고 저장까지 한다.. strtok을 처음 호출할 때는 대상 문자열을 직접 지정해 주어야 하지만, 이후 같은 문자열에서 계속해서 토큰을 추출할 때는 문자열 파라미터 자리에 NULL을 지정한다. 이것이 가능한 이유는 strtok 함수가 내부적으로 현재 위치를 기억하기 때문이다.strtok의 동작 방식초기 호출: strtok은 첫 호출 시에 두 개의 인자를 받는다. 첫 번째 인자는 분리할 원본 문자열이고, 두 번째 인자는 구분자이다.. 함수는 문자열의 시작부터 구분자를 찾고, 구분자 위치에 널 문자('\0')를 끼워 넣어 문자열을 분리한다. 첫 번째 토큰 이후의 문자열의 나머지 부분을 내부적으로 저장한..
strcpy와 strdup 차이 strcpy와 strdup은 둘 다 C 언어에서 문자열을 다룰 때 사용되는 함수이이다. 하지만 문자열을 복사할 때와 메모리를 할당할 때 그 기능에서 차이가 있다.strcpy 함수strcpy는 C 표준 라이브러리의 일부로, 한 문자열을 다른 문자열로 복사하는 데 사용된다. 이 함수는 목적지 버퍼에 충분한 공간이 확보되어 있어야 하며, 개발자가 메모리 관리를 직접 해야 한다. char *strcpy(char *dest, const char *src);dest: 복사할 문자열을 받을 대상 버퍼의 포인터이다. 이 버퍼는 충분한 크기로 미리 할당되어 있어야 한다.src: 복사할 원본 문자열의 포인터이다. 예제char source[] = "Hello, world!";char destination[20]; // 충..
동적 할당 시 값 초기화 memset 함수 memset 함수를 사용하면 배열이나 구조체 같은 데이터 구조의 초기화를 간단하고 빠르게 수행할 수 있습니다. 예를 들어, 정수 배열을 0으로 초기화하거나, 문자 배열에 특정 문자를 채울 때 유용하다. C 언어의 표준 라이브러리인 에 정의되어 있다. void *memset(void *s, int c, size_t n);s: 초기화할 메모리의 시작 주소 c: 메모리에 설정할 값 (int형으로 전달되지만, 실제로는 unsigned char로 변환되어 메모리에 저장됨n: 초기화할 바이트 수  예제 1: 정수 배열 초기화#include #include int main() { int numbers[10]; memset(numbers, 0, sizeof(numbers)); for (int i = 0..
SQL Server에서 NULL 값 vs 빈 문자열의 저장 공간 비교 데이터베이스 설계에서 NULL 가능한 필드와 NOT NULL 필드 사이의 선택은 중요한 결정입니다. 특히, 많은 개발자들이 NULL 값이 빈 문자열보다 저장 공간을 덜 차지할 것이라는 잘못된 가정을 하기도 한다. SQL Server 환경에서 이러한 가정이 실제로 타당한지 검증하기 위해 직접 실험을 해보았다. SQL Server 2005 환경에서 두 개의 테이블을 생성하고, 각각의 테이블에 50,000개의 데이터를 삽입하는 실험을 진행했다. 실험에 사용된 테이블은 다음과 같다. temp 테이블: data 컬럼을 varchar(500)으로 설정하고, NULL 값을 허용temp2 테이블: data 컬럼을 varchar(500)으로 설정하고, NULL을 허용하지 않음 (NOT NULL).각 테이블에 대하여 NU..
SQL Server에서 NULL 값 vs 빈 문자열의 저장 공간 비교 데이터베이스 설계에서 NULL 가능한 필드와 NOT NULL 필드 사이의 선택은 중요한 결정입니다. 특히, 많은 개발자들이 NULL 값이 빈 문자열보다 저장 공간을 덜 차지할 것이라는 잘못된 가정을 하기도 한다. SQL Server 환경에서 이러한 가정이 실제로 타당한지 검증하기 위해 직접 실험을 해보았다. SQL Server 2005 환경에서 두 개의 테이블을 생성하고, 각각의 테이블에 50,000개의 데이터를 삽입하는 실험을 진행했다. 실험에 사용된 테이블은 다음과 같다. temp 테이블: data 컬럼을 varchar(500)으로 설정하고, NULL 값을 허용 temp2 테이블: data 컬럼을 varchar(500)으로 설정하고, NULL을 허용하지 않음 (NOT NULL). 각 테이블에 대하여 ..
공백 문자열과 빈 공간 문자열의 차이 C 언어에서 "공백 문자열"은 일반적으로 길이가 0인 문자열을 의미한다. 공백 문자열은 문자 '\0' 하나만을 포함하며, 이 문자는 문자열의 끝을 나타내는 널 종료 문자(null terminator)이다. 1. 표현 방식 공백 문자열은 "" 로 표현된다. char emptyString[] = ""; || const char* emptyStringPtr = ""; 2. 메모리 크기 공백 문자열은 메모리에 하나의 바이트를 차지하며, 이는 널 종료 문자('\0')임 3. 용도 공백 문자열은 종종 문자열을 초기화할 때 사용되거나, 함수의 리턴 값으로 문자열이 비어 있음을 나타낼 때 사용된다. 4. 공백 문자열과 관련된 함수 strlen : 문자열의 길이를 계산하는 함수. 공백 문자열의 길이는 0임 char em..
sqrt 함수 C언어에서 루트를 계산할 때 사용하는 sqrt 함수는 헤더 파일에 정의되어 있다. sqrt 함수를 사용하기 위해 먼저 헤더 파일을 포함해야 한다. 또한 sqrt() 함수는 double sqrt(double x);로 정의되어 있다. 이 함수는 인자로 double 타입의 값을 받고, 계산된 제곱근 역시 double 타입으로 반환한다. 예제 코드 #include #include int main() { double number = 25.0; // 제곱근을 구하고자 하는 수 double result; // 계산된 제곱근을 저장할 변수 result = sqrt(number); // sqrt 함수를 호출하여 제곱근 계산 printf("The square root of %.2f is %.2f\n", number, re..
부분 문자열 비교 함수 strstr strstr 함수의 사용과 원리 Apple , Apple cider 라는 두 문자열이 있다고 가정하자. 이 단어 중에 중복되는 단어는 Apple 이다. C언어에서 함수로 "Apple" 이라는 단어가 중복되는지 찾고 싶을 때 사용하는 함수가 바로 strstr 이다. string.h 헤더 파일에 선언되어 있다. strstr 함수의 원형은 다음과 같다: char *strstr(const char *haystack, const char *needle); haystack: 검색 대상이 되는 문자열 needle: haystack에서 찾고자 하는 부분 문자열 strstr 함수는 haystack 문자열을 처음부터 끝까지 순차적으로 탐색하며, 각 위치에서 needle 문자열의 시작 부분과 일치하는지 검사한다. 일치하는 ..