2017-03-26 15 views
-2

何も入力せずに単にEnterキーを押すと、このWhileループが途切れることがあります。空白入力のループを中断する方法

int main() 
{ 
while(1){ 
    int integer; 
    printf("enter integer:"); 
    scanf("%d",&integer); 
    } 
    return 0; 
    } 
+3

ない初期化'%d 'で可能です。 –

答えて

2

できません。 scanfは恐ろしい機能であり、避けるべきです(特に、ユーザーの入力に使用しないでください)。

ユーザ入力を有効にする最も簡単な方法は、すべての入力がfgets(行全体を読む)であることを確認することです。その行を分析して数値に変換することができます(たとえば、strtolstrtodsscanf、...など)。ここで

は例です:

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

int main(void) { 
    while (1) { 
     char buf[200]; 
     int integer; 

     printf("enter integer: "); 
     fflush(stdout); 
     if (!fgets(buf, sizeof buf, stdin)) { 
      /* input error or end of file reached */ 
      break; 
     } 
     buf[strcspn(buf, "\n")] = '\0'; /* remove trailing newline, if any */ 

     if (buf[0] == '\0') { 
      /* empty line */ 
      break; 
     } 

     sscanf(buf, "%d", &integer); 
    } 
    return 0; 
} 
1

私によると... inputStringからがそうでなければ

  • を破るTHEN

  • を改行するために等しい場合

    1. が文字列
    2. として入力してください整数に変換する

      int main() 
      { 
          while(1) 
          { 
           int integer; 
           char input[1024]; 
           printf("enter integer:"); 
           fgets (input, sizeof (input), stdin); 
           if (strcmp (input, "\n") == 0) 
            break; 
           integer = atoi(input); 
          } 
          return 0; 
      } 
      
  • 0

    ことが可能であり、 は入力が正の整数をとる場合などのために入力 で許可されていない何かを持つ整数の値を初期化し、Iは整数で-1

    int main() 
    { 
    while(1){ 
        int integer=-1; 
    
        printf("enter integer:"); 
        scanf("%d",&integer); 
    if(integer==-1) 
    break; 
        } 
        return 0; 
        } 
    
    関連する問題