2010-03-20 7 views

답변

6

예, strtol 함수에는이 목적으로 사용할 수있는 base 매개 변수가 있습니다. 이것은 정확하게 분석하고 (이진수 11001 인) 정수 (25)를 인쇄

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


int main() 
{ 
    char* input = "11001"; 
    char* endptr; 

    int val = strtol(input, &endptr, 2); 

    if (*endptr == '\0') 
    { 
     printf("Got only the integer: %d\n", val); 
    } 
    else 
    { 
     printf("Got an integer %d\n", val); 
     printf("Leftover: %s\n", endptr); 
    } 


    return 0; 
} 

:

여기 기본적인 에러 핸들링의 예이다. strtol의 오류 처리는 문자열의 일부를 원하는 기준의 정수로 파싱 할 수없는 경우를 감지합니다. 위에 링크 된 참고 자료에서이 내용을 자세히 읽고 싶습니다.

1

구문 분석은, 다음 printf 기능 중 하나를 문자열로 변환합니다. 예 :

char binary[] = "111"; 
long l = strtol(binary, 0, 2); 
char *s = malloc(sizeof binary); 
sprintf(s, "%ld\n", l); 

이렇게하면 필요한 것보다 많은 공간이 할당됩니다.

관련 문제