ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ItoA
    C/문자열 함수 2020. 9. 4. 23:49

    1. ItoA 함수 사용 방법

    ItoA함수는 visual studio 2019 community에서는 에러가 난다.

    그 대신 sprintf함수를 이용해서 이를 대체할 수 있다.

    밑에서는 기존에 쓰던 ItoA 함수를 구현할 것이다.

    프로그램 실행결과

     

    2. ItoA 함수의 구현

    마지막 매개변수는 진법을 의미하며 십진수로 쓰고 싶으면 마지막 매개변수로 10을 주면 된다.

    첫 번째 매개변수는 정수값이며, 해당 정수값을 두 번째 매개변수에 문자화 시켜서 집어 넣어주면 된다.

    위의 함수를 크게 보면

    while루프에서 하는 일은 _Value값을 _Radix(진법)로 나눈 나머지 값을 먼저 확인해본다.

    나머지 값이 10과 같거나 크다는 의미는 십진법이 아니라는 의미.(대개 16진수의 경우이다.)

    십진법이 아니라면, 정수값 10부터는 알파벳으로 표기를 해야하기 때문에, 이에 맞는 보정을 해주어야 한다.

    단일문자 'a'의 아스키 코드값은 97이다.

    단일문자 '0'의 아스키 코드값은 48이다.

    임시 배열 temp를 선언한 이유는 우리는 정수값 _Value의 1의 자리에서 부터 확인을 할 것이기 때문이다.

    즉, _Value의 1의 자리 숫자가 배열의 0번째 인덱스에 저장을 시킬것이기 때문. 

    그러면, temp 배열에는 _Value값의 역순으로 값이 저장이 될 것이다. 

    먼저 임시 변수temp배열을 두어서 temp배열의 0번째 인덱스에 해당정수의 1의 자리서부터 하나씩 값을 넣어준다.

    그러면 while루프를 다 돌고 나면 temp배열에는 0311이 들어있게 된다.

    이 배열을 1130으로 다시 올바르게 교체하는 작업을 for루프에서 시작하게 된다.

    그리고 마지막 자리에 NULL문자를 삽입해준다.

    프로그램 실행결과

    3. 소스 파일

    main.c
    0.00MB

     

    4. 세 자리씩 끊어서 콤마 찍는 함수 구현

    이번에는, 정수가  12314956이 입력된다고 하자.

    그러면 출력이 12,314,956 이 되도록 만들어 보자.

    위의 방식과 비슷하게 첫번째로 해야할 일은, 정수를 임시 배열에 저장한다.

    그리고, 컴마를 몇개 찍어야 할지를 판단해야 한다. (컴마는 뒤에서부터 3자리씩 끊는다.)

    즉, 배열의 길이가 8이면,  컴마는 2번이 찍힌다.

    그리고 배열의 길이가 4라면, 컴마는 1번 찍힌다.

    즉, 일반화를 적어보면

    이 함수를 사용 용도는 금액을 출력할 때 자주 쓰인다.

    로그램 실행결과

    5. 소스 파일

    main.c
    0.00MB

    'C > 문자열 함수' 카테고리의 다른 글

    AtoI  (0) 2020.09.05
    strtok  (0) 2020.09.04
    strcat - 문자열 붙이는 함수  (0) 2020.09.04
    strcmp - 문자열 비교 함수  (0) 2020.09.04
    strcpy - 문자열을 복사하는 함수  (0) 2020.09.04

    댓글

Designed by Tistory.