编译通过,运行不对,指针与字符串,此程序哪里有问题???

来源:百度知道 编辑:UC知道 时间:2024/06/14 09:30:24
#include "string.h"
#include "stdio.h"

int search(char* fch,int n,char src);
void main()
{
int num;
char ch = 'd';
char *des= "a bcdefg";/
num = search(des,7,ch);
printf("%d\n",num);

}
int search(char* dch,int n,char ch)
{
for(int i=0; i<n; i++){
if(*(dch + i)==ch)
i++;}
return i;
}

int search(char* dch,int n,char ch)
{
for(int i=0; i<n; i++){
if(*(dch + i)==ch)
i++;} //这里判断当找到ch字符时应该跳出循环,便可以返回想要找的字符的索引。如果你要找ch字符所出现的次数,则需要再加个变量。总之,i++是绝对不行的。
return i;
}

解决方法:i++;改为break;

如果是要统计字符出现的次数,将search()函数的定义改为如下形式:

int search(char* dch,int n,char ch)
{int i,c=0;
for(i=0; i<=n; i++){
if(*(dch + i)==ch)c++;
}
return c;
}

如要返回第一次出现的位置,改为如下形式:

int search(char* dch,int n,char ch)
{int i;
for(i=0; i<=n; i++){
if(*(dch + i)==ch)break;
}
return i+1;
}

或者:

int search(char* dch,int n,char ch)
{int i;
for(i=0; i<=n; i++){
if(*(dch + i)==ch)return i+1;
}

}

呃....
int search(char* dch,int n,char ch)
{
int i=0,j=0;
for(;i<n;i++){
if(*(dch+i)==ch)j++;
}
return j;
}

int search(char* fch,int n,char s