【发布时间】:2018-05-29 03:39:46
【问题描述】:
我写了一个函数,它有两个不同的返回选项:
//function to compare the strings in function3
int compare(char* str, char* dest){
int answer;
int i;
int length;
length = strlen(str);
// int jlength;
// jlength = strlen(dest);
for(i=0; i<length; i++){
if(str[i] == dest[i]){
answer = 1;
}else {
answer = 2;
}
}
return answer;
}
我想稍后使用这个函数,并且根据函数返回的内容发生不同的事情。以下是我如何构建的相关部分:
//compare the reversed str with the orignal, now stored in dest
compare(str, dest);
int function3answer;
if(compare == 1){
function3answer = 1;
}else{
function3answer = 2;
}
return function3answer;
}
编译时出现错误:
warning: comparison between pointer and integer [enabled by default]
在 1 周围添加单引号没有帮助(也不是我真正想要的,因为我没有引用数组的一部分),也没有将其降低为一个等号(这会产生不同的警告)。
非常感谢!
【问题讨论】:
-
第一个错误:将函数
compare的返回值分配到 if-else 语句之前的变量中。 -
我不明白。你在尝试这个
if(compare(str, dest) == 1){吗?还是function3answer = compare(str, dest);? -
另外,如果你在比较字符串,你的
compare函数很容易被 strcmp 替换,这是不正确的。 -
@woz 谢谢你,你的第一条评论成功了!谢谢,但是比较是一项更大任务的一部分,因此编写我认为的函数更容易。非常感谢您的帮助!
-
@eids 考虑这种情况:str1 = abcd 和 str2 = xyzd。由于您在每次迭代中逐个字母地比较两个字符串并覆盖变量
answer的值,因此在您的情况下唯一真正重要的迭代是最后一个。在我提到的情况下,answer将是 1,因为最后一个字母是相同的,但是 str1 != str2。
标签: c function if-statement return-value