我正在尝试编写一个接受输入的函数,并在有效时将其返回
即使输入正确,该功能也会不断打印错误信息。
如何在不事先评估为布尔值的情况下将参数传递给验证?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char verify(char argument[256]){ //function to check an input is valid
char input;
while(1){
input = getchar();
while(getchar()!='\n'); //clear buffer
if(argument){
break;
}
printf("That is not a valid input. Try again: "); //error message
}
return input;
}
int main(void){
char input;
printf("Enter an alphabetical input: ");
input = verify(input>64&&input<91||input>96&&input<123); //checks to see if the ASCII value of the input corresponds to a alphabetical char
printf("Input is: %c",input);
return 0;
}
答案 0 :(得分:0)
而不是if (argument)
你需要在那里实际放置你的布尔条件:if (input>64&&...&&input<123)
当你这样做时,verify
函数不再需要参数。
C不支持您尝试将条件作为参数传递的内容。恰好,该表达式的类型与char[]
类型verify
所需的类型兼容;这就是你的代码完全编译的原因。 C确实不知道你想传递verify
的条件表达式来评估。它只是不起作用。