我正在尝试编写一个将接受字符串和字符的函数,并将返回字符最后出现的位置的索引。我正在编译这个问题,正如问题的标题所示,我收到了一个错误:
错误:从不兼容的类型'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;
}
答案 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;
}