将参数称为字符串不起作用 - C

时间:2016-11-20 01:11:09

标签: c input verify

我正在尝试编写一个接受输入的函数,并在有效时将其返回

即使输入正确,该功能也会不断打印错误信息。

如何在不事先评估为布尔值的情况下将参数传递给验证?

#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;
}

1 个答案:

答案 0 :(得分:0)

而不是if (argument)你需要在那里实际放置你的布尔条件:if (input>64&&...&&input<123)当你这样做时,verify函数不再需要参数。

C不支持您尝试将条件作为参数传递的内容。恰好,该表达式的类型与char[]类型verify所需的类型兼容;这就是你的代码完全编译的原因。 C确实不知道你想传递verify的条件表达式来评估。它只是不起作用。