C 错误:分配给';int';来自不兼容类型';无效';
我正在尝试编写一个函数,它将接收一个字符串和一个字符,并返回该字符最后出现的位置的索引。我在编译这篇文章时遇到了困难,从问题的标题可以看出,我得到了一个错误: 错误:从不兼容的类型“void”分配给“int” 我尝试将函数的“void”更改为“int”,然后尝试让函数打印结果,但是这导致了一组不同的错误。我只是感到困惑,因为我的老师总是向我们展示一些函数,它们的返回类型总是“void”,而这种类型的返回是我们班到目前为止唯一看到的C 错误:分配给';int';来自不兼容类型';无效';,c,string,function,void,return-type,C,String,Function,Void,Return Type,我正在尝试编写一个函数,它将接收一个字符串和一个字符,并返回该字符最后出现的位置的索引。我在编译这篇文章时遇到了困难,从问题的标题可以看出,我得到了一个错误: 错误:从不兼容的类型“void”分配给“int” 我尝试将函数的“void”更改为“int”,然后尝试让函数打印结果,但是这导致了一组不同的错误。我只是感到困惑,因为我的老师总是向我们展示一些函数,它们的返回类型总是“void”,而这种类型的返回是我们班到目前为止唯一看到的 #include <string.h> #inclu
#include <string.h>
#include <stdio.h>
void findLast (char string[], char letter){
int Num[20];
int i;
int count=-1;
for (i=0; i<strlen(string);i++){
if (letter==string[i]){
count=count+1;
Num[count]=i;
}
}
int result=Num[count];
}
int main (void){
char string[20];
char letter;
int result;
printf("Enter your string: ");
scanf("%s", string );
printf("Enter your letter: ");
scanf(" %c", &letter);
result = findLast(string, letter);
printf("%d", result);
return 0;
}
#包括
#包括
void findLast(字符字符串[],字符字母){
int Num[20];
int i;
整数计数=-1;
对于(i=0;i,如@HolyBlackCat所述,您的函数需要返回值,并且应按如下方式编写:
int findLast (char string[], char letter){
return Num[count];
}
void
关键字指定不返回任何内容。您的代码函数具有类型void,这意味着没有返回值。只需将函数类型更改为int,并将其与结果一起返回即可
修改代码:
int findLast (char string[], char letter){
int Num[20];
int i;
int count=-1;
for (i=0; i<strlen(string);i++){
if (letter==string[i]){
count=count+1;
Num[count]=i;
}
}
int result=Num[count];
return result;
}
int findLast(字符字符串[],字符字母){
int Num[20];
int i;
整数计数=-1;
对于(i=0;i类型void
表示函数不返回值。由于函数应返回整数,因此需要将void
替换为int
,并使用return语句返回结果。此外,不需要变量Num和count。在for
循环函数strlen多次调用。使用字符串终止符作为循环保护更有效。以下是一个简化版本:
int findLast(char string[], char letter)
{
int result, i;
result = -1;
i = 0;
while (string[i] != '\0') {
if (string[i] == letter) {
result = i;
}
i++;
}
return result;
}
如果要返回值,则声明的返回类型应为int
,而不是void
,并且函数中应包含return
语句。将返回类型更改为int
,并放入return Num[count];
在函数末尾。如果您试图查找字符串中最后出现的字符,则应从字符串末尾开始向后扫描。换句话说,for(i=strlen(string)-1;i>=0;i--)If(letter==string[i])返回i;