본문 바로가기
프로그래밍언어/C언어[Error]

[C언어][Error] 009. invalid operands to binary + (have ‘char *’ and ‘int’) – 문자열과 정수 간 연산 오류

by about_IT 2025. 4. 22.

이 오류는 문자열(또는 char 포인터)과 정수형 값을 + 연산자로 함께 사용하려고 할 때 발생합니다. C언어에서 포인터와 정수 간 연산은 특정 규칙이 있을 경우 가능하지만, 문자열 상수나 포인터 연산에서 잘못된 방식으로 사용하면 컴파일러가 허용하지 않습니다.


특히 문자열 리터럴을 직접 더하려 하거나, 포인터 연산을 명확히 하지 않은 경우 이 오류가 자주 발생합니다.


아래 예제를 통해 확인해 보겠습니다.

#include <stdio.h>

int main() {
    char *str = "hello";
    printf("%s\n", str + 1);   // 올바른 사용 (포인터 연산)
    printf("%s\n", str + "world");  // 오류 발생
    return 0;
}

위 코드에서 str은 char 포인터이고, "world"는 문자열 상수이므로 두 값을 + 연산자로 결합하는 것은 허용되지 않습니다.

error: invalid operands to binary + (have ‘char *’ and ‘char *’)

문자열 연결을 원할 경우에는 strcat, sprintf, 또는 문자열 복사 방식 등을 사용해야 합니다.

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

int main() {
    char result[100] = "hello";
    strcat(result, " world");
    printf("%s\n", result);
    return 0;
}

출력 결과:

hello world

● 실전 팁

  • 포인터 연산은 정수와만 수행할 수 있으며, 두 개의 포인터끼리 직접 덧셈 연산을 하는 것은 허용되지 않습니다.
  • 문자열을 연결하려면 strcat, strncat, snprintf 등의 함수를 사용하세요.
  • 문자열 포인터와 관련된 연산을 수행할 때는 타입을 명확히 이해하고 코딩하는 습관이 필요합니다.

포인터 연산과 문자열 연결을 구분해서 사용해야 하며, 단순한 + 연산자로 문자열을 합치려는 시도는 C언어에서는 허용되지 않음을 기억해야 합니다.