Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 错误:分配给';int';来自不兼容类型';无效';_C_String_Function_Void_Return Type - Fatal编程技术网

C 错误:分配给';int';来自不兼容类型';无效';

C 错误:分配给';int';来自不兼容类型';无效';,c,string,function,void,return-type,C,String,Function,Void,Return Type,我正在尝试编写一个函数,它将接收一个字符串和一个字符,并返回该字符最后出现的位置的索引。我在编译这篇文章时遇到了困难,从问题的标题可以看出,我得到了一个错误: 错误:从不兼容的类型“void”分配给“int” 我尝试将函数的“void”更改为“int”,然后尝试让函数打印结果,但是这导致了一组不同的错误。我只是感到困惑,因为我的老师总是向我们展示一些函数,它们的返回类型总是“void”,而这种类型的返回是我们班到目前为止唯一看到的 #include <string.h> #inclu

我正在尝试编写一个函数,它将接收一个字符串和一个字符,并返回该字符最后出现的位置的索引。我在编译这篇文章时遇到了困难,从问题的标题可以看出,我得到了一个错误:

错误:从不兼容的类型“void”分配给“int”

我尝试将函数的“void”更改为“int”,然后尝试让函数打印结果,但是这导致了一组不同的错误。我只是感到困惑,因为我的老师总是向我们展示一些函数,它们的返回类型总是“void”,而这种类型的返回是我们班到目前为止唯一看到的

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