C에서 문자열과 Int 연결

Jinku Hu 2023년10월12일
  1. asprintf, strcatstrcpy함수를 사용하여 C에서 문자열과 Int 연결
  2. asprintfmemccpy함수를 사용하여 C에서 문자열과 Int 연결
C에서 문자열과 Int 연결

이 기사에서는 C에서stringint를 연결하는 여러 방법을 보여줍니다.

asprintf, strcatstrcpy함수를 사용하여 C에서 문자열과 Int 연결

int변수와 문자열을 연결하는 첫 번째 단계는 정수를 문자열로 변환하는 것입니다. asprintf함수를 사용하여 전달 된 정수를 문자열로 저장합니다. asprintf는 GNU C 라이브러리 확장의 일부이며 다른 구현에서는 사용할 수 없습니다. 대상 문자열 버퍼가 내부적으로malloc함수 호출을 사용하여 동적으로 할당된다는 점을 제외하면sprintf와 유사하게 작동하며 리턴 된 포인터는 프로그램 종료 전에 해제되어야합니다. 정수가 변환되면strcpystrcat호출을 연결하여 사용자가 할당 한 버퍼에서 두 개의 주어진 문자열을 연결합니다. 이 경우 대상 버퍼의 크기를 나타 내기 위해MAX매크로를 임의로 정의했지만 실제 시나리오에서는malloc을 사용하는 것이 더 유연합니다.

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifndef MAX
#define MAX 100
#endif

int main(int argc, char *argv[]) {
  const char *str1 = "hello there";
  int n1 = 1234;

  char *num;
  char buffer[MAX];

  if (asprintf(&num, "%d", n1) == -1) {
    perror("asprintf");
  } else {
    strcat(strcpy(buffer, str1), num);
    printf("%s\n", buffer);
    free(num);
  }

  exit(EXIT_SUCCESS);
}

출력:

hello there1234

또는 연결 호출 다음에strcat함수를 다시 호출하고 지정된char버퍼에 다른 문자열을 추가 할 수 있습니다. asprintf함수에서 성공적인 반환 값을 확인하고 실패하면 연결 프로세스를 계속합니다.

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifndef MAX
#define MAX 100
#endif

int main(int argc, char *argv[]) {
  const char *str1 = "hello there";
  int n1 = 1234;

  char *num;
  char buffer[MAX];

  if (asprintf(&num, "%d", n1) == -1) {
    perror("asprintf");
  } else {
    strcat(strcpy(buffer, "Hello there, "), num);
    strcat(buffer, "! continued");
    printf("%s\n", buffer);
    free(num);
  }

  exit(EXIT_SUCCESS);
}

출력:

Hello there, 1234! continued

asprintfmemccpy함수를 사용하여 C에서 문자열과 Int 연결

또는asprintfmemccpy와 함께 사용하여 문자열 및int를 연결할 수 있습니다. memccpy<string.h>헤더 파일에 정의 된 C 표준 라이브러리 문자열 유틸리티의 일부입니다. 소스 및 대상 버퍼를 나타내는 두 개의 포인터가 필요합니다. 이러한 버퍼 메모리 영역은 겹치지 않아야합니다. 그렇지 않으면 결과가 정의되지 않습니다. 마지막 두 인수는 복사를 중지 할 문자와 소스 위치에서 가져올 최대 바이트 수를 나타냅니다. else범위에서free함수를 호출합니다. 그렇지 않으면num포인터가 유효한 포인터인지 확인할 수 없습니다.

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifndef MAX
#define MAX 100
#endif

int main(int argc, char *argv[]) {
  const char *str1 = "hello there";
  int n1 = 1234;

  char *num;
  char buffer[MAX];

  if (asprintf(&num, "%d", n1) == -1) {
    perror("asprintf");
  } else {
    memccpy(memccpy(buffer, str1, '\0', MAX) - 1, num, '\0', MAX);
    printf("%s\n", buffer);
    free(num);
  }

  exit(EXIT_SUCCESS);
}

출력:

hello there1234
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C String