C++ 仅输入1和0

C++ 仅输入1和0,c++,C++,我只希望在(while)中验证1和0,但使用此代码时出现错误 do { printf("kostas :"); gets(pinakasa[i].noshleia); } while (pinakasa[i].noshleia != 1 || piakasa[i].noshleia != 0); gets()使用从STDIN读取的字符填充char[]缓冲区。您试图将char*指针(一个char[]衰减成的内容)与int值进行比较,但该值无效。您需要进行字符串

我只希望在(while)中验证1和0,但使用此代码时出现错误

do {
    printf("kostas :");
    gets(pinakasa[i].noshleia);
} while (pinakasa[i].noshleia != 1 || piakasa[i].noshleia != 0);
gets()
使用从
STDIN
读取的字符填充
char[]
缓冲区。您试图将
char*
指针(一个
char[]
衰减成的内容)与
int
值进行比较,但该值无效。您需要进行字符串比较,例如:

do{
printf(“kostas:”);
获取(pinakasa[i].noshleia);
}
当(
(strcmp(pinakasa[i].noshleia,“1”)!=0)&&
(strcmp(pinakasa[i].noshleia,“0”)!=0)
);

请在您的问题中提供一些(完整的程序,带有
main
)。阅读<代码>获取已过时且危险。编译时启用所有警告和调试信息。使用
g++-Wall-Wextra-g
尝试查找一个整数
x
,该整数的
x!=0 | | x!=1
不正确。(从0和1开始。)在
while
语句中肯定有一个输入错误:
pinakasa
vs
piakasa
。拼写错误。此外,在Do-while循环中,第一次迭代总是发生,所以第一次迭代没有应用到它。FWIW、<代码>获取< /C> >已经被弃用并从C和C++中删除。您应该避免自己使用它,并使用
cin
scanf
非常感谢!如果我想要相同的字符,例如f和m?显然,您可以根据需要将
“1”
“0”
替换为
“f”
“m”
。如果希望日期为1到30天:)然后您必须首先将字符串转换为整数,例如使用
atoi()
sscanf()
,然后您可以将其与所需的值进行比较,
int day;do{…day=atoi(pinakasa[i].noshleia);}while((day<1)| |(day>31))