使用 if 语句检测用户是否输入了特定字符或数字
Use if statement to detect if user entered specific character or number
在我的 getInput 函数中,我正在扫描来自用户的输入。
如果用户输入 'q'
或 'Q'
我想打印用户希望退出的信息(程序实际上不必 'exit' 在技术术语中)。
如果用户输入任何其他值,我想return那个值并继续运行我的程序。
那么,我的问题是:
我如何测试某个字符值的 int 到 char 转换,类似于我在下面尝试的方法?
我的程序在用户输入字符时退出,在用户输入整数时运行,但没有正确检测到 'q'
或 'Q'
已被按下。
这是我目前的代码:
int getInput() {
int numSets;
char quitTest1 = 'q';
char quitTest2 = 'Q';
//get number of sets from user
printf("\nEnter desired amount of random number sets (or 'q'/'Q' to quit): ");
scanf("%d", &numSets);
if (numSets == (int)quitTest1 || numSets == (int)quitTest2) {
printf("Exited");
}
else {
return numSets;
}
}
我可能遗漏了一些主要原则,但我似乎无法在 Google 上找到太多帮助。
感谢所有回答。
注意
scanf("%d", &numSets);
不会给numSets
赋任何值,如果输入是一个字符,numSets
会保持它以前的值,在这种情况下是未知的,因为变量是未初始化的,提前使用它会导致未定义的行为。
将输入作为 char array
转换为 char
或 int
似乎是最佳选择。
int getInput() {
char numSets[100];
int number = -1;
char q;
char quitTest1 = 'q';
char quitTest2 = 'Q';
//get number of sets from user
printf("\nEnter desired amount of random number sets (or 'q'/'Q' to quit): ");
fgets(numSets, sizeof(numSets), stdin);
if (sscanf(numSets, "%d", &number)){
printf("%d", number); //testing
return number;
}
if (sscanf(numSets, "%c", &q) && (q == quitTest1 || q == quitTest2))
printf("Exited");
else{
puts("Invalid input");
return number; //will return -1;
}
在我的 getInput 函数中,我正在扫描来自用户的输入。
如果用户输入 'q'
或 'Q'
我想打印用户希望退出的信息(程序实际上不必 'exit' 在技术术语中)。
如果用户输入任何其他值,我想return那个值并继续运行我的程序。
那么,我的问题是:
我如何测试某个字符值的 int 到 char 转换,类似于我在下面尝试的方法?
我的程序在用户输入字符时退出,在用户输入整数时运行,但没有正确检测到 'q'
或 'Q'
已被按下。
这是我目前的代码:
int getInput() {
int numSets;
char quitTest1 = 'q';
char quitTest2 = 'Q';
//get number of sets from user
printf("\nEnter desired amount of random number sets (or 'q'/'Q' to quit): ");
scanf("%d", &numSets);
if (numSets == (int)quitTest1 || numSets == (int)quitTest2) {
printf("Exited");
}
else {
return numSets;
}
}
我可能遗漏了一些主要原则,但我似乎无法在 Google 上找到太多帮助。
感谢所有回答。
注意
scanf("%d", &numSets);
不会给numSets
赋任何值,如果输入是一个字符,numSets
会保持它以前的值,在这种情况下是未知的,因为变量是未初始化的,提前使用它会导致未定义的行为。
将输入作为 char array
转换为 char
或 int
似乎是最佳选择。
int getInput() {
char numSets[100];
int number = -1;
char q;
char quitTest1 = 'q';
char quitTest2 = 'Q';
//get number of sets from user
printf("\nEnter desired amount of random number sets (or 'q'/'Q' to quit): ");
fgets(numSets, sizeof(numSets), stdin);
if (sscanf(numSets, "%d", &number)){
printf("%d", number); //testing
return number;
}
if (sscanf(numSets, "%c", &q) && (q == quitTest1 || q == quitTest2))
printf("Exited");
else{
puts("Invalid input");
return number; //will return -1;
}