2014-03-25 4 views
0

공백으로 구분 된 5 개의 정수가있는 문자열이 있습니다. 예를 들면 다음과 같습니다. 12 33 45 0 1문자 배열의 정수 읽기

여기에 5 개의 변수가 있습니다.이 변수에는이 숫자를로드 할 변수가 있습니다. 더 번 atoi 번으로 전화 할 수 있습니까? 아니면 어떻게 가능합니까?

char c[] = "12 33 45 0 1"; 
int a1, a2, a3, a4, a5; 
+2

당신은 아마 * 배열 *라는 하나 개의 다른 개념을 배울 필요가 반환 값을 확인하는 확신 할 수 있습니다. –

답변

5

사용 strtok는 토큰으로 문자열을 분할하고 각각에 atoi를 사용합니다.

간단한 예 :

char c[] = "1 2 3";   /* our input */ 
    char delim[] = " ";   /* the delimiters array */ 
    char *s1,*s2,*s3;   /* temporary strings */ 
    int a1, a2, a3;    /* output */ 

    s1=strtok(c,delim);   /* first call to strtok - pass the original string */ 
    a1=atoi(s1);    /* atoi - converts a string to an int */ 

    s2=strtok(NULL,delim);  /* for the next calls, pass NULL instead */ 
    a2=atoi(s2); 

    s3=strtok(NULL,delim); 
    a3=atoi(s3); 

까다로운 일에 대한 strtok 우리가 첫 번째 토큰에 대한 원래의 문자열을 전달한다는 것입니다, 다른 토큰 NULL.

+0

감히 샘플 코드를 삽입 하시겠습니까? 그렇지 않으면 당신의 대답이 너무 짧아서 완벽한 대답이 아니라 의견에 더 잘 들어 맞을 것입니다. –

+0

@JanVlcinsky - 네 말이 맞아. 댓글 주셔서 감사합니다. – Benesh

1

또한 숫자를 변환 sscanf를 사용하지만,

if (sscanf(c, "%d%d%d%d%d", &a1, &a2, &a3, &a4, &a5) != 5) 
    printf("Well, that didn't work\n");