将参数作为字符串调用不起作用 - C
calling an argument as a string not working - C
我正在尝试编写一个函数,它将接受一个输入并 return 它在有效时
即使输入正确,函数也会不断打印错误消息。
如何在不事先将其评估为布尔值的情况下传递参数以进行验证?
#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;
}
而不是if (argument)
你需要实际把你的布尔条件放在那里:if (input>64&&...&&input<123)
当你这样做时,verify
函数不再需要接受参数。
C 不支持您尝试将条件作为参数传递的操作。恰好该表达式的类型与 verify
所采用的 char[]
类型兼容;这就是为什么您的代码正在编译的原因。 C 绝不会知道您要传递 verify
的条件表达式来求值。它只是行不通。
我正在尝试编写一个函数,它将接受一个输入并 return 它在有效时
即使输入正确,函数也会不断打印错误消息。
如何在不事先将其评估为布尔值的情况下传递参数以进行验证?
#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;
}
而不是if (argument)
你需要实际把你的布尔条件放在那里:if (input>64&&...&&input<123)
当你这样做时,verify
函数不再需要接受参数。
C 不支持您尝试将条件作为参数传递的操作。恰好该表达式的类型与 verify
所采用的 char[]
类型兼容;这就是为什么您的代码正在编译的原因。 C 绝不会知道您要传递 verify
的条件表达式来求值。它只是行不通。