2017-05-20 1 views
0

이것이 제가 이론화 한 것입니다.하지만 작동하지 않는 것처럼 보입니다. HELP PLEAZEE문자열을 문자와 공백 만 받아들이려고합니다. 숫자가 없습니다.

int main() 
    { 
     char input[50]; 
     int i; 

    do{ 
     printf("ENTER A CHARACTER:"); 
     scanf("%s",&input); 

    if(isalpha(input)!=0){ 
     printf("YOU INPUTTED A CHARACTER"); 
     i++; 
    }else{ 
     printf("INVALID INPUT\n"); 
    } 

    }while(i!=1); 

    } 
+0

난 그냥 대신 isalpha에의 isdigit에 사용한다 : 하나 이상을 줄 경우 정확히 하나 개의 문자를 제공하지만가는 계속 경우 이 종료? 그러나 나는 그 결과가 다른 것과 똑같다고 생각한다. –

+0

스크립트? C는 스크립팅 언어가 아닙니다 .... –

+1

'scanf ("% s", & input);'->'scanf ("% 49s", input);' –

답변

0

isalpha에 인수로서 정수 걸린다. char 배열을 제공하고 있습니다.

두 개 이상의 문자가 필요하면 input []에서 주어진 문자 수만큼 반복해야합니다 (이 코드에서 알기 힘듭니다).

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

int main() 
{ 
    char input[50]; 
    int i = 0, j; 
    size_t len = 0; 

    do 
    { 
     printf("ENTER A CHARACTER:"); 
     scanf("%s",&input); 

     len = strlen(input); 

     for(j = 0; j < len; j++) { 
      if(isalpha(input[j])) 
      { 
       i++; 
       printf("YOU INPUTTED A CHARACTER %d\n", i); 
      } 
      else 
      { 
       printf("INVALID INPUT\n"); 
       break; 
      } 
     } 
    } while(i!=1); 
} 
+0

int len에 대해 확실합니까? ? strlen이 무엇을 반환하는지 알고 있습니까? [Strlen] (http://www.stdlib.net/~colmmacc/strlen.c.html) – Michi

+0

예, size_t를 반환합니다. int는 부정적인 값은 없지만 지적 해 주셔서 감사합니다. – nge

관련 문제