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

C의 Itoa 기능 익히기:실용 가이드

C의 Itoa 기능 익히기:실용 가이드

C 프로그래밍 언어는 50여년 전에 출시되었습니다. 그 이후로 프로그래밍 세계에서 엄청난 인기를 얻었습니다. 구조적 단순성, 기능, 이식성, 효율적인 메모리 관리 등의 기능으로 인해 다른 언어보다 뛰어납니다. 다양한 다른 기능에도 불구하고 C의 함수는 많은 사용자가 강력한 코드 조각을 작성하는 데 도움이 되는 가장 눈에 띄는 자산입니다.

또한 itoa는 데이터 유형 변환기 역할을 하는 널리 사용되는 비표준 함수입니다. int 데이터 유형을 입력으로 사용하고 이를 문자열로 변환합니다. 하지만 사용법을 모르시는 분들이 많습니다. 따라서 이 가이드에서는 C에서 itoa 함수를 번거로움 없이 사용하는 방법을 간결하게 설명합니다.

기본부터 시작해 보겠습니다. itoa 함수의 간단한 구문은 다음과 같습니다:

int 메인() {

    정수 번호 =12345;
    문자 문자열[20];
    itoa(숫자, 문자열, 10);
    printf("정수:%d\n문자열:%s\n", num, str);
    0을 반환;

}

해당 프로그램의 세부 내용은 다음과 같습니다.

  1. num은 정수입니다
  2. str은 캐릭터입니다
  3. 10은 베이스

이제 프로그램을 작성하고 itoa 함수를 구현해 보겠습니다. 예를 들어, 입력된 숫자를 문자열로 바꾸는 프로그램을 작성해야 합니다.

#include

#include

void itoa(int num, char *str, int base) {

    int i =0;
    int isNegative =0;

    if (숫자 ==0) {
        str[i++] ='0';
        str[i] ='\0';
        반환;
    }

    if (num <0 &&base !=10) {

        음수 =1;
        숫자 =-숫자;
    }

    while (num !=0) {
        int rem =숫자 % 기본;

        str[i++] =(rem> 9) ? (rem - 10) + 'a' :rem + '0';

        숫자 =숫자 / 기본;
    }

    if (isNegative &&기본 ==10)
        str[i++] ='-';

    str[i] ='\0';

    int 시작 =0;
    int end =i - 1;

    동안(시작 <끝) {

        char 온도 =str[시작];
        str[시작] =str[끝];
        str[end] =온도;
        시작++;
        끝--;
    }
}

정수 메인() {
    정수 숫자;
    printf("정수를 입력하세요:");
   
    if (scanf("%d", &num) !=1) {
        fprintf(stderr, "입력이 잘못되었습니다. 정수를 입력하세요.\n");
        EXIT_FAILURE를 반환합니다.
    }

    int max_size =snprintf(NULL, 0, "%d", num) + 1;
    char *str =(char *)malloc(max_size);

    if (str ==NULL) {
        fprintf(stderr, "메모리 할당 실패\n");
        EXIT_FAILURE를 반환합니다.
    }

    itoa(숫자, 문자열, 10);

    printf("정수:%d\n문자열:%s\n", num, str);

    무료(str);

    0을 반환;

}

이전 프로그램에서 itoa(int num, char *str, int base)는 itoa 함수입니다. 또한 다음 구문은 입력 숫자도 0일 때 결과에 0을 직접 할당합니다.

if (숫자 ==0) {

    str[i++] ='0';
    str[i] ='\0';
    복귀;

}

입력 숫자가 음수이고 밑수도 10이 아닌 경우 다음 프로그램 라인은 음수 플래그를 설정합니다:

if (num <0 &&base !=10) {

    음수 =1;
    숫자 =-숫자;

다음 루프는 모든 숫자를 처리하여 해당 문자로 변환합니다. 따라서 10보다 큰 진수의 경우 프로그램은 10~15의 숫자에 "a"~"f" 문자를 사용합니다.

}

while (num !=0) {

    int rem =숫자 % 베이스;

    str[i++] =(rem> 9) ? (rem - 10) + 'a' :rem + '0';

    숫자 =숫자 / 기본;
   
}

숫자가 원래 음수이고 밑이 10인 경우 프로그램은 결과 문자열에 음수 기호를 추가합니다.

if (isNegative &&base ==10)

    str[i++] ='-';

다음 줄은 결과 문자열을 종료한 다음 변환 프로세스 중에 숫자가 역순으로 얻어지므로 이를 반대로 바꿉니다.

str[i] ='\0';

// 문자열 반전

int 시작 =0;

int end =i - 1;

동안(시작 <끝) {

    char 온도 =str[시작];
    str[시작] =str[끝];
    str[end] =온도;
    시작++;
    끝--;

}

따라서 프로그램은 정수를 입력으로 사용하고 문자열 표현을 위해 메모리를 할당합니다. 그런 다음 itoa를 호출하여 정수를 문자열로 변환하고 원래 정수를 인쇄합니다. 마지막으로 할당된 메모리를 해제합니다. 예를 들어, 프로그램에 숫자를 부여해 보겠습니다:

C의 Itoa 기능 익히기:실용 가이드

그러나 정수가 아닌 숫자를 입력하면 프로그램은 다음과 같은 결과를 표시합니다:

C의 Itoa 기능 익히기:실용 가이드

결론

C에서 itoa 함수를 쉽게 구현하고 사용할 수 있는 방법입니다. 정수를 문자열로 변환하는 여러 함수가 포함된 자세한 예제를 사용했습니다. 이는 단지 예시일 뿐이라는 점을 기억하세요. itoa 함수를 다양한 함수와 결합하여 놀라운 프로그램을 작성할 수 있습니다.

작가 소개

C의 Itoa 기능 익히기:실용 가이드

프라텍 장지드

개인적이고 직업적인 이유로 열정적인 Linux 사용자로서 항상 Linux 세계의 새로운 것을 탐색하고 독자들과 공유합니다.