C程序,在字符串查找特定字符,此程序当在字符串有两个相同字符时便不对,请看补充:

来源:百度知道 编辑:UC知道 时间:2024/06/01 15:53:42
当我输入gaozez,特定字符是z,程序输出要s1[6],而我输出的是s1[4],我自己改的地方如下注释:

#include <stdio.h>
#include <string.h>
int search(char *s,char c);
void main()
{char s1[80],ch;
int pos;
printf("input the string:");
gets(s1);
printf("input the character:");
ch=getchar();
pos=search(s1,ch);
if(pos!=-1) printf("the position is s1[%d].\n",pos+1);
else printf("%c is not in the string %s\n",ch,s1);
getch();
}
int search(char *s,char c)
{int i=strlen(s)-1;
for(;i>=0;i--)
if(s[i]==c) {return i;break;}/*这样改,程序还不对,break语句在子函数中就失去作用的吗,应该怎样改呢,谢谢!
return -1;
}
程序输出的是s1[6],我要输出的是s1[4],上面的写错了。break 怎么不行?

照你的程序,结果当然会是s1[6]。
看search()中的这一句:
for(;i>=0;i--) i是从后向前找的,你的第六个字符已经是z了(注意,你输入的是gaozez),程序就不会再向前搜索到第4个字符了。
还有,return i;后面的break完全没有用,不可能被执行到。因为在函数中,只要执行到return,函数就会返回,其后的语句一概不管。
如果要输出s1[4],应该这样写:
int search(char *s,char c)
{int i=0; /*让i先指向第一个字符*/
for(;s[i]!='\0';i++) /*使i一直+1,直到字符串末尾*/
if(s[i]==c) return i;
return -1;
}

我输出的就是
s1[6]

我不会C

在excel中如何去掉字符串中的特定字符 求查找文本特定字符并进行修改的批处理程序! 求助:在foxpro中,统计字符串中特定字符出现次数 C语言程序编辑.编辑一程序在主函数中用字符指针的方法判断输入字符串是否回文,是输出字符YES否则NOT 用C语言编写程序:从键盘输入一串字符,按回车键后结束,最后将字符串在屏幕上输出。 C语言:编写程序从键盘上输入一个字符串和一个字符,实现从字符串中删除该字符。 用c语言编写一个程序,用于接收一个字符串,并统计某字符在该 字符串中出现的次数 高手帮帮忙啊!实现在新窗口中查找旧窗口textbox字符串中的指定字符 vb 怎么读一个字符串到一个特定字符? [c]下面程序的功能是将字符串s中所有的字符c删除。。。