【发布时间】:2018-11-12 20:52:13
【问题描述】:
我正在尝试编写一个函数,该函数将接收一个字符串和一个字符,并返回该字符最后出现的位置的索引。我在编译这个时遇到了问题,从问题的标题可以看出,我收到一个错误:
错误:从不兼容的类型“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;
}
【问题讨论】:
-
如果你打算返回一个值,声明的返回类型应该是
int而不是void,并且函数中应该有一个return语句。 -
将返回类型更改为
int,并将return Num[count];放在函数末尾。 -
如果您要查找字符串中最后一次出现的字符,则应从字符串末尾开始并向后扫描。换句话说
for (i = strlen(string) - 1; i >= 0; i--) if (letter == string[i]) return i;
标签: c string function void return-type