2017-05-20 13 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

関連する問題