错误:从不兼容的类型'void'分配'int'

时间:2018-06-03 09:36:16

标签: c string function void return-type

我正在尝试编写一个将接受字符串和字符的函数,并将返回字符最后出现的位置的索引。我正在编译这个问题,正如问题的标题所示,我收到了一个错误:

  

错误:从不兼容的类型'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;

}

3 个答案:

答案 0 :(得分:1)

您的代码函数的类型为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;

}

答案 1 :(得分:0)

正如@HolyBlackCat所提到的,你的函数需要返回值,应该写成如下:

int findLast (char string[], char letter){    

    return Num[count];    
}

void关键字指定不会返回任何内容。

答案 2 :(得分:0)

类型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;
}