Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C언어에서 string.h와 루프 없이 문자열 길이 구하는 방법

이번 글에서는 C언어에서 string.h 헤더 파일과 반복문(루프)을 사용하지 않고 문자열의 길이를 구하는 방법을 알아보겠습니다.

사실 문자열 길이를 구하는 문제는 string.h 없이도 아주 쉽게 해결할 수 있습니다. 일반적으로는 재귀 함수(recursive function)를 활용하면 되는데, 이번 예제에서는 재귀 대신 조금 다른 트릭을 사용해 보겠습니다.

printf() 함수의 반환값 활용하기

핵심 아이디어는 바로 printf() 함수의 반환값입니다. 많은 개발자들이 간과하는 사실인데, printf()는 화면에 출력한 문자의 개수를 반환합니다. 따라서 문자열만 단독으로 출력하는 printf() 호출의 반환값을 변수에 저장하면, 그 값이 곧 문자열의 길이가 됩니다.

단, 주의할 점이 있습니다. "The string is: "처럼 다른 텍스트를 함께 출력하면 해당 텍스트의 글자 수까지 반환값에 포함되므로, 순수하게 대상 문자열만 출력해야 정확한 길이를 얻을 수 있습니다.

예제 코드

#include<stdio.h>
main() {
   char* my_str = "This is a String";
   printf("The string is: ");
   int length = printf("%s", my_str);
   printf("\nThe length of string is: %d", length);
}

실행 결과

The string is: This is a String
The length of string is: 16

코드 설명

위 코드의 동작 흐름을 살펴보면 다음과 같습니다.

먼저 문자열 포인터 my_str에 "This is a String"이라는 문자열을 저장합니다. 첫 번째 printf()는 안내 문구를 출력하는 역할만 하며, 반환값은 사용하지 않습니다. 두 번째 printf("%s", my_str)는 오직 대상 문자열만 출력하므로, 그 반환값 16이 문자열의 실제 길이와 일치합니다. 마지막으로 계산된 길이를 화면에 출력합니다.

이 방식은 별도의 카운터 변수나 반복문, 재귀 호출 없이 단 한 줄로 문자열 길이를 얻을 수 있다는 점에서 흥미로운 기법입니다. 다만 실무에서는 가독성과 명확성을 위해 strlen()을 사용하는 것이 일반적이며, 이 트릭은 C 표준 라이브러리 함수들의 동작 원리를 이해하는 데 유용한 학습 예제로 활용할 수 있습니다.