何も入力せずに単にEnterキーを押すと、このWhileループが途切れることがあります。空白入力のループを中断する方法
int main()
{
while(1){
int integer;
printf("enter integer:");
scanf("%d",&integer);
}
return 0;
}
何も入力せずに単にEnterキーを押すと、このWhileループが途切れることがあります。空白入力のループを中断する方法
int main()
{
while(1){
int integer;
printf("enter integer:");
scanf("%d",&integer);
}
return 0;
}
できません。 scanf
は恐ろしい機能であり、避けるべきです(特に、ユーザーの入力に使用しないでください)。
ユーザ入力を有効にする最も簡単な方法は、すべての入力がfgets
(行全体を読む)であることを確認することです。その行を分析して数値に変換することができます(たとえば、strtol
、strtod
、sscanf
、...など)。ここで
は例です:
#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;
}
私によると... inputStringからがそうでなければ
を破るTHEN
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;
}
ことが可能であり、 は入力が正の整数をとる場合などのために入力 で許可されていない何かを持つ整数の値を初期化し、Iは整数で-1
int main()
{
while(1){
int integer=-1;
printf("enter integer:");
scanf("%d",&integer);
if(integer==-1)
break;
}
return 0;
}
ない初期化'%d 'で可能です。 –