C语言 编程错误

#include <stdio.h>
#include <stdlib.h>
int Strchr(char s[],char ch);
int main()
{
char ch;
int y;
char s[1000];
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
y=Strchr(s,ch);
printf("the first position is:%d\n",y);
system("PAUSE");
return 0;
}
int Strchr(char s[],char ch)
{
int i;
for(i=0;i<=1000;i++)
{
if(s[i]=ch)
{
return i;
}
else if(s[i]!=ch)
{
return -1;
}

}
}
结果总显示0

调试了一下,问题在于字符串输入后没有清stdin流残余数据,故变量ch没有获得正确值。

修改代码和注释如下:

#include <stdio.h>

#include <stdlib.h>

int Strchr(char s[],char ch);

int main()

{

 char ch; 

 int y;

 char s[1000];

 printf("Please input a string:");

 scanf("%s",&s);

 getchar();     //清除stdin流的残留数据

 printf("Search:");

 scanf("%c",&ch); 

 getchar();    //清除stdin流的残留数据

 y=Strchr(s,ch); 

 printf("the first position is:%d\n",y);

 system("PAUSE");

 return 0;

}

int Strchr(char s[],char ch)

{

 int i;

 //for(i=0;i<=1000;i++)   数组下标0~999

 for(i=0;i<1000;i++)

 {

  if(s[i]==ch)   //比较用==

  {

   return i+1;  //换算为正常顺序位置

  }

  //else if(s[i]!=ch)  逻辑有误

  //{

  // return -1;

  //}

 }

 return -1;

}

在VC6调试通过,如下图:

供参考。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-25
if(s[i]==ch)你写成=了,应该是==追问

改了还是不行
老师说还要改
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
我想最后实现的时候
在string后输一串,
在search后输一个,
在position后得结果。
请问大神怎么弄

追答

//看看
#include
#include
int Strchr(char s[],char ch);
int main()
{
char ch;
int y;
char s[1000];
printf("Please input a string:");
gets(s);
printf("Search:");
scanf("%c",&ch);
y=Strchr(s,ch);
printf("the first position is:%d\n",y);
system("PAUSE");
return 0;
}
int Strchr(char s[],char ch)
{
int i;
int flag = -1;
for(i=0;i<1000;i++)
{
if(s[i]==ch)
break;

}
return i;
}

第2个回答  2015-11-25
吧 if(s[i]=ch)改成if(s[i]==ch)就可以追问

改了还是不行
老师说还要改
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
我想最后实现的时候
在string后输一串,
在search后输一个,
在position后得结果。
请问大神怎么弄

追答

scanf("%c\n",&ch); 吧%c改成%s

第3个回答  2015-11-25
if(s[i]=ch) 是 if (s[i]==ch)追问

改了还是不行
老师说还要改
printf("Please input a string:");
scanf("%s",&s);
printf("Search:");
scanf("%c\n",&ch);
我想最后实现的时候
在string后输一串,
在search后输一个,
在position后得结果。
请问大神怎么弄

相似回答