2016-11-20 48 views
-2

我想写的时候它是有效的调用参数为一个字符串不工作 - ç

功能不断打印错误消息,即使输入的是,将采取一个输入并返回它的功能正确。

我该如何通过参数来验证它是否事先被评估为布尔值?

#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

您认为如何? 'input = verify(input> 64 && input <91||input> 96 && input <123); //检查输入的ASCII值是否与字母字符对应意味着 –

+0

verify函数会要求用户输入一个字符,直到它满足参数。 然后这个值被赋值给char“input”。 这是错的吗? –

+0

一开始输入是否有值? –

回答

0

相反的if (argument)实际上你需要把你的布尔条件有:if (input>64&&...&&input<123)当你这样做时,verify功能不再需要采取一种说法。

C不支持你在做什么试图通过条件作为参数。恰恰相反,该表达式的类型与char[]类型verify需要兼容;这就是为什么你的代码正在编译。 C确实不知道你想通过verify的条件表达式来评估。它只是不能这样工作。