【发布时间】:2019-06-05 10:59:21
【问题描述】:
我需要在我有一个字符串并且它应该都是元音的情况下执行此方法,否则该方法将返回 false,但我收到此表达式可分配错误,我只是编码的初学者,有人可以帮助我吗?谢谢!
int verify_vowel(char *string, char elem, int length){
if(string != NULL){
value= TRUE;
for (i=0; i<length && value == TRUE; i++) {
if(string[i] == elem){
int is_vowel(char element);
value = TRUE;
}else{
value= FALSE;
}
}
}
return 1;
}
int is_vowel(char element){
int j;
int value1;
int length;
char string2[LENGTH];
value1= TRUE;
for(j=0; j<length && value1== TRUE; j++){
if(string2[j]= 'a' && string2[j]= 'e' && string2[j]='i' && string2[j]='o' && string2[j]= 'u'){ //im getting the error here
value1= TRUE;
} else{
value1= FALSE;
}
}
int main(){
char string[]= "aeiuodsf";
int ret;
ret= is_vowel(string);
printf("Result: %d\n",ret);
return 0;
}
【问题讨论】:
-
value是在哪里定义的?TRUE/FALSE是如何定义的?另外请发布完整的错误消息并详细说明它出现在代码的哪个位置(通常编译器会说它在哪一行有问题) -
好的,我现在看到评论你的问题是
(string2[j]= 'a'..这是一个分配而不是比较你应该使用==。此外,该表达式将始终为 false,因为同一字符不能同时包含多个字符,您可以使用||逻辑或strcmp() -
欢迎来到 SO。不幸的是,缺少某些部分:您从哪里得到此错误消息?
value在哪里定义?在verify_vowel中声明is_vowel的目的是什么?请阅读How To ask 并提供MCVE -
ret= is_vowel(string);该函数采用char,但您提供char * -
请注意,
verify_vowel()未使用。代码有很多错误。例如在is_vowel()中,变量char string2[LENGTH];没有被初始化,而是被检查。此外,迭代不会因失败而终止,而是返回最终字符的状态,而不管发现了什么。但是函数是不完整的,反正也不返回值。