又一道C++问题~

来源:百度知道 编辑:UC知道 时间:2024/06/13 21:20:22
编写一个函数,返回给定的字符在某个字符串中第一次出现的位置,如果不存在,则函数返回值为-1,并编写主程序调用该函数,要求能对用户输入的任意多个字符进行查找,该题命名为实验5-3.c。
我的程序:
#include <stdio.h>

#include <string.h>
int search (char *o,char n,int i)
{
int j;
for(j=0;j<i;j++)
{
if(n=*(o+i))
{
return i;
break;
}
else
{
return -1;
}
}
}

void main()
{
int i,j,k;
char word;
char *op,p;
int size;

printf("请输入字符串中字符的个数:\n");
scanf("%d",&size);
i=size;
printf("请输入字符串\n");
for(j=0;j<i;j++)
{
scanf("%c",op+j);
}

printf("请输入要查找的字符:\n");
scanf("%c",&word);
k=search(op,word,size);
if (k==-1)
{
printf("不存在\n");
}
else
{
printf("%d"

int search (char *o,char n,int i)
{
int j;
for(j=0;j<i;j++)
{
if(n=*(o+i))
{
return i;
break;
}
else
{
return -1;
}
}
}

if(n=*(o+i))?????
i换成j吧,你变量弄混了
还有,return -1放到函数最后面,不要放在if后,不然第一次不匹配就直接推出了

int search (char *o,char n,int i)
{
int j;
for(j=0;j<i;j++)
{
if(n=*(o+j))
{
return j;
break;
}
else
{
return -1;
}
}
}
你的循环只是循环了一次,第一次进入循环之后,就一定会进入if...else...中的一个。

可以改成if...if...

int search (char *o,char n,int i)
{
int j=0;
while(j++)
{
if(n=*(o+i))
{
return i;
break;
}
if(j=i+1)
{
return -1;
}
}
}

这样之后,如果两个if都不符合,就直接