C54 [C] strcat(), strstr(), strtok() strcat() dst 문자열 뒤에 src 문자열을 덧붙인다 dst 문자열의 NULL 캐릭터가 있는 위치부터 src 문자열을 추가한다 따라서, dst의 크기가 충분하지 않다면 위험한 함수이다 strcat() 사용예시 #include #include #define LENGTH (20) int main(void) { char string1[LENGTH] = "Hello, "; char string2[LENGTH / 2] = "Hello, "; const char* string3 = "world!"; printf("sizeof(string1): %zu\n", sizeof(string1)); printf("sizeof(string2): %zu\n", sizeof(string2)); printf("sizeof(s.. 2024. 2. 10. [C] strcpy() strcpy() vs. strncpy() - strcpy() strcpy 함수는 널 종단 문자 ('\0')를 만날 때까지 src 문자열의 전체 문자를 dst 문자열로 복사한다 만약 src 문자열의 길이가 dst 문자열의 버퍼 크기보다 크면, 버퍼 오버플로우가 발생할 수 있다 strcpy는 보통 null 종단 문자를 복사하지 않아도 되는 경우에 사용한다 - strncpy() strncpy 함수는 두 번째 매개변수로 지정된 길이까지만 src 문자열을 dst 문자열로 복사한다 만약 src 문자열의 길이가 두 번째 매개변수로 지정한 길이보다 크면, 나머지는 null 종단 문자로 채워지지 않는다 명시적으로 지정된 길이까지만 복사하며 나머지는 null 종단 문자로 채우지 않기 때문에, 버퍼 오버플로우를 방지하는 데.. 2024. 2. 9. [C] strcmp() strcmp() vs. strncmp() vs. int strncmp() - strcmp() strcmp 함수는 두 문자열을 비교하여 동일한지 여부를 확인한다 비교할 두 문자열이 완전히 동일하면 0을 반환하고, 첫 번째로 다른 문자의 ASCII 값에 따라 음수 또는 양수를 반환한다 - strncmp() strncmp 함수는 두 문자열 중에서 처음부터 n개의 문자까지 만을 비교한다 두 문자열이 동일한 경우 0을 반환하고, 동일하지 않은 경우 두 문자열의 첫 번째 다른 문자의 ASCII 값에 따라 음수 또는 양수를 반환합니다. strncmp은 주로 특정 길이만큼의 문자열을 비교할 때 사용된다 - int strncmp() int strncmp은 반환 값이 int로 명시되어 있는 strncmp 함수이다 strn.. 2024. 2. 9. [C] strlen() strlen() vs. strnlen() vs. strnlen_s() - strlen() strlen 함수는 null 종단 문자('\0')가 나타나기 전까지의 문자열 길이를 측정한다 하지만 null 종단 문자 이후의 메모리를 읽기 시작할 경우, undefined behaviour를 초래할 수 있다 - strnlen() strnlen 함수는 첫 번째 매개변수로 전달된 문자열에서 최대한으로 지정된 길이까지만 검사한다 null 종단 문자 이전에 지정된 최대 길이에 도달하면 검사를 중단하고 그때까지의 길이를 반환한다 strnlen은 C99 표준에서 도입되었고 많은 C 라이브러리에서 사용 가능하다 - strnlen_s() strnlen_s는 C11 표준에서 도입된 안전한 함수로 strnlen의 개선버전이다 추가적.. 2024. 2. 9. [C] 포인터 참조 vs. 역참조 참조: 포인터를 의미하며, 변수의 값을 직접 다 들고 있는 게 아니라, 메모리 주소를 읽는 것 역참조: 변수의 값을 직접 읽는 것이 아니라, 메모리 주소를 통해 타고 가서 값을 읽는 것 // 직접 접근 int score = 100; score = 50; // 간접 접근 int score = 100; int* ptr_to_score = &score; // 포인터를 통해 참조 *ptr_to_score = 50; // 역 참조 연산자(*)를 통해 역참조 NULL 포인터 NULL 포인터는 아래와 같은 경우에 사용한다 1. 포인터의 초기화 2. 포인터가 더이상 사용 중이지 않음을 알리고 싶을 때 ptr = NULL; 3. 포인터가 유효한 메모리 주소를 참조하고 있는지 확인할 때 if (NULL.. 2024. 2. 8. [C] 재귀 함수 (Resurcive Function) 재귀 함수(Resurcive Function) 함수 내에서 자기 자신을 호출하는 함수를 의미한다 #include void recur(int count); int main(void) { recur(3); return 0; } void recur(int count) { printf("%d\n", count); if (1 == count) { return; } recur(count - 1); } 재귀 함수의 핵심 재귀 함수 속 return의 위치와 재귀 함수 속 함수가 호출되는 위치가 매우 중요하다 다시 말해, 재귀 함수 속 return의 위아래로 어떤 코드를 작성하느냐, 함수 호출 위 아래로 어떤 코드를 작성하느냐에 따라 결과물이 달라진다 #include void recur(int count); int ma.. 2024. 2. 7. 이전 1 2 3 4 5 6 7 ··· 9 다음