2016-09-13 10 views
-3

내 현재 문제는 stdin에서 알 수없는 정수로 읽는 것입니다. 내 접근 방식은 gets()를 사용하여 문자 배열 (char str[50])으로 전체 행을 저장하는 것입니다. 난 char 배열을 구문 분석하고 각각의 "문자열 int"정수로 변환하고 int 배열에 저장하려고합니다. 내가 strtol (nums[i]=strtol(A, &endptr, 10)A 어디 문자 배열입니다 시도했다. 그러나 endptr 아무것도 A의 나머지 부분 또한 숫자를 저장하는 것처럼 보입니다. 예를 들어, A "8 hello"endptr hello 있지만 A " 8 6 4 "endptr은? C 배열의 문자열 배열을 변환하는 최선의 방법

이 더 나은 방법이 있습니다. 아무것도 atoi으로이 가능합니까? 어떤 도움을 크게 감사합니다! 감사합니다! 이것은 (양의) 정수를 추출하고 바로 건너 뛰어야

char A[1000]; 
long nums[1000]; 
printf("Enter integers: "); 
gets(A); 
char *endptr; 
int i=0; 
while(endptr!=A){ 
    nums[i]=strtol(A, &endptr, 10); 
    i++; 
} 
+0

배열을 반복하고 각 숫자를 변환하십시오. 뭐가 문제 야? 코드를 보여주십시오. 이것은 코딩 서비스가 아닙니다. – Olaf

+1

코드가없는 모호한 질문입니다. 몇 가지 코드를 게시 할 수 있습니까? –

+0

A = "12 35 78"인 경우 char 배열을 반복하는 방법은 무엇입니까? 나는 그것을 "1 2 3 5 7 8"로 바꿀 수 있었지만 그것이 내가 필요한 것이 아니다. –

답변

0

정수가 아닌 다른 것 위에 :

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

char string[1024]; 
long numbers[512]; // worst case ~ 1/2 number of chars = "1 1 1 1 1 1 ... 1" 

/* ... */ 

printf("Enter integers: "); 
fgets(string, sizeof(string), stdin); 

char *endptr, *ptr = string 
int count = 0; 

while (*ptr != '\0') { 
    if (isdigit(*ptr)) { 
     numbers[count++] = strtol(ptr, &endptr, 10); 
    } else { 
     endptr = ptr + 1; 
    } 

    ptr = endptr; 
} 
관련 문제