2015-01-05 5 views
2

나는 대답을 찾기가 힘듭니다. 나는 신용 카드 번호 ('378282246310005'라고 가정 해 봅시다)가 특정 기준을 충족하는지 제어 할 수 있기를 원합니다. 번호 3).배열에 숫자를 한꺼번에 넣는 C

전체 숫자를 한 번에 입력하고 숫자의 특정 위치 (예 : 매초마다)를 확인할 수 있기를 원합니다.

int main() 
{ 

    int user_input[5]; 
    int i; 

    for(i=0;i<5;i++) 
    { 
     printf("Credit Card Number Digit %d\n",i+1); 
     scanf("%d",(user_input+i)); 
    } 

    if(user_input[0] == 5) 
     printf("MASTERCARD\n"); 

    else 
     printf("INVALID\n"); 

return 0; 
} 
+1

나는 숫자를 숫자 ('% d')로 읽은 다음 수십 년 (1, 10, 100, 1000 등)을 단계별로 처리하고 모듈러스 연산자를 사용합니다. 2/전체 숫자를 문자열로 읽은 다음 그 문자열 안에있는 개별'char'을 단계적으로 찾으십시오. 후자는 아마 가장 쉽습니다. – Evert

답변

2

숫자가 입력 될 때마다 확인하고 숫자가 아닌 입력은 무시하십시오.

int main() 
{ 
    int user_input[16]; 
    int digits = 0; 

    while (digits < 16) 
    { 
     int c = getchar();   // get character 
     if (c == EOF) break;  // break on EOF 
     if (isdigit(x))   // if character is numeric 
     {       // convert it to int and append to user_input array 
      user_input[digits++] = c - '0'; 
     }       // (otherwise just ignore it) 
    } 

    if (digits > 0 && user_input[0] == 5) 
    { 
     printf("MASTERCARD\n"); 
    } 
    else 
    { 
     printf("INVALID\n"); 
    } 

    return 0; 
} 
+0

따옴표가 섞여있어'c - '0'; ' – ryanpattison

+0

답변 해 주셔서 감사합니다. 그러나 나는 그것이 다음과 같아야한다고 생각합니다 : "isdigit (c)" – Beikos

+0

@rpattiso : 고맙다 - 지금 고쳤습니다. –

0

내가 char의 배열로 문자열을 스캔 제안하고이 배열에 액세스 할 : 그러나, 나는 단지 그들에게 성가신 또 다른 후 하나를 입력 할 때 배열에 넣어 관리. 이 기술은 다음 코드를 찾을 수있는 Wikipedia article에 포함되어 있습니다.

#include <stdio.h> 

int main() 
{ 
    char word[20]; 

    if (scanf("%19s", word) == 1) 
     puts(word); 
    return 0; 
} 

잘린는 질문에 유사한 액세스 할 수있는 배열 word, 문자열을 읽습니다. 분명히 문자열의 최대 길이는 형식 문자열의 매개 변수로 제공 될 수 있습니다.

+0

기사 주셔서 감사합니다. 나는 여유 시간을 갖자 마자 그것을 읽을 것이다. – Beikos

관련 문제