将参数作为字符串调用不起作用 - 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 的条件表达式来求值。它只是行不通。