개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.30 21:59

vsprintf 함수 사용 시 format string에 %d 형식 지정 시 정수 값이 소수점으로 표현되는 문제

목록
  • 몽고DB러버 4일 전 2025.05.30 21:59
  • 25
    1
저는 C 언어에서 vsprintf 함수를 사용하여 문자열을 출력할 때 format string에 %d 형식 지정 시 정수 값이 소수점으로 표현되는 문제가 발생하고 있습니다.

예를 들어, 코드는 다음과 같습니다.

c

#include 



int main() {

    int num = 10.5;

    char str[100];

    vsprintf(str, "%d", &num);

    printf("%sn", str);

    return 0;

}



이 코드를 컴파일하고 실행하면 "10.5" 이 아닌 "10"이 출력됩니다.

vsprintf 함수의 format string에 %d 형식 지정 시 정수 값이 소수점으로 표현되는 이유는 무엇이며, 어떻게 해결할 수 있는지 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  4일 전



    vsprintf 함수는 정수 값을 출력할 때 소수점까지 출력하지 않습니다. 이는 %d 형식이 정수 값을 출력하기 때문입니다. 정수 값은 소수점이 없는 값을 의미하므로 소수점까지 출력하지 않습니다.

    정수 값을 소수점까지 출력하고 싶다면 %f 형식을 사용해야 합니다.

    예를 들어, 코드는 다음과 같습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        int num = 10;
    
        char str[100];
    
        vsprintf(str, "%.1f", &num);
    
        printf("%sn", str);
    
        return 0;
    
    }
    
    


    이 코드를 컴파일하고 실행하면 \"10.0\"이 출력됩니다. %.1f 형식은 소수점 첫 번째 자리까지 출력합니다.

    또한, 정수 값을 소수점까지 출력하고 싶다면 float 형식으로 변환해야 합니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        int num = 10;
    
        float float_num = (float)num;
    
        char str[100];
    
        vsprintf(str, "%.1f", &float_num);
    
        printf("%sn", str);
    
        return 0;
    
    }
    
    


    이 코드를 컴파일하고 실행하면 \"10.0\"이 출력됩니다.

    vsprintf 함수의 format string에 %d 형식 지정 시 정수 값이 소수점으로 표현되는 문제를 해결하기 위해서는 정수 값을 소수점까지 출력하고 싶은 형식을 사용하거나 정수 값을 float 형식으로 변환해야 합니다.

    2025-05-30 22:00

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 24,908건 / 21 페이지

검색

게시물 검색