본문 바로가기

카테고리 없음

C언어에서 sprintf와 strlen을 사용하여 문자열에 내용 추가하기


C언어에서 문자열의 끝에 새로운 내용을 추가하는 작업을 수행할 때 sprintf 함수와 strlen 함수를 함께 사용하는 방법에 대해 자세히 알아보자.

1. strlen 함수의 역할
strlen 함수는 string.h 헤더 파일에 정의되어 있으며, 주어진 문자열의 길이를 반환한다. 이 함수는 널 종료 문자('\0')를 제외한 문자의 개수를 세어 그 값을 반환한다. 예를 들어, 문자열 "Hello, world!"의 길이는 13이다. 

#include <string.h>
#include <stdio.h>

int main() {
    char str[] = "Hello, world!";
    int len = strlen(str);
    printf("Length: %d\n", len);  // 출력: Length: 13
    return 0;
}



2. sprintf 함수의 사용
sprintf 함수는 stdio.h 헤더 파일에 정의되어 있으며, 형식화된 데이터를 문자열로 저장하는 데 사용된다. 이 함수는 printf와 비슷하지만, 출력을 화면에 하는 대신 문자열 버퍼에 저장한다.

char buffer[50];
int number = 250;
sprintf(buffer, "Number: %d", number);
printf("%s\n", buffer);  // 출력: Number: 250


3. 문자열 끝에 내용 추가하기
이제 strlen과 sprintf를 함께 사용하여 기존 문자열의 끝에 새로운 내용을 추가하는 방법을 살펴보자.

strlen 함수로 기존 문자열의 길이를 알아낸 후, 그 길이 위치부터 sprintf를 사용하여 추가 내용을 기록한다.

#include <string.h>
#include <stdio.h>

int main() {
    char answer[100] = "Hello, world!";
    int sum_num = 123;
    sprintf(answer + strlen(answer), " + %d", sum_num);
    printf("%s\n", answer);  // 출력: Hello, world! + 123
    return 0;
}


여기에서 핵심은 위 예제에서 answer + strlen(answer)는 answer 배열의 끝을 가리키며, sprintf는 이 위치에서부터 문자열 " + 123"을 저장한다. 결과적으로 answer는 원래 문자열 뒤에 새로운 내용이 추가된 형태로 갱신된다.

이 방법은 문자열에 동적으로 내용을 추가할 때 매우 유용하며, 복잡한 문자열 조작이 필요할 때 효과적인 기법 중 하나이다. 항상 기억해야 할 점은 버퍼의 크기가 충분히 크다고 가정하는 것이다. 버퍼 오버플로를 방지하기 위해서는 적절한 크기의 버퍼를 할당하는 것이 중요하다.

이렇게 strlen과 sprintf를 이용한 문자열 조작 방법을 이해하고 활용하면, C 프로그래밍에서 다양한 시나리오에 맞게 문자열을 효과적으로 관리할 수 있다.