C语言查找一个字符在字符串1中第一次出现的字符位置
#include <stdio.h>
int main(void)
{
char ch[20]={};
char ch1;
int i=0;
scanf("%s",ch);
getchar();
scanf("%c",&ch1);
for(i=0;ch[i]=='\0';i++)
{
if(ch[i]==ch1)
printf("%d\n",i++);
}
return 0;
} 展开
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
int main(void){
char str1[]="ab678ef0ABCDEcdNijklmnOPQghopqrs345FGHIJKLtuvwxyz12M9RSTUVWXYZ";//定义一个试验用字符串
char ch,*p;
while(1){
printf("Input a character to find(# end)...\nch=");
if(scanf(" %c",&ch),ch=='#')//输入要查找的字符,若为#则结束
break;
if(p=strchr(str1,ch))//查找输入的字符
printf("\'%c\' first appeared at subscript %d\n",ch,p-str1);//换算成下标输出
else printf("No find \'%c\'...\n",ch);//提示没有找到
}
return 0;
}
扩展资料:
注意事项
利用char *strchr(const char *str, int c) 函数返回的指针,判断字符c所在的位置。
找到第一个位置之后,从该位置的下一个字符起找。
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "this is a sample string";
char *pch;
printf("looking for 's' character in \"%s\"\n ",str);
pch = strchr(str,'s');
printf("str address = %p\n",str);
printf("pch address = %p\n",pch);
while(pch != NULL ){
printf("found at %d\n",pch-str);
pch = strchr(pch+1,'s');
}
return 0;
}
字符在字符串中的位置就是该字符在字符串中的下标,利用库函数strchr可以解决此问题。举例代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
int main(void){
char str1[]="ab678ef0ABCDEcdNijklmnOPQghopqrs345FGHIJKLtuvwxyz12M9RSTUVWXYZ";//定义一个试验用字符串
char ch,*p;
while(1){
printf("Input a character to find(# end)...\nch=");
if(scanf(" %c",&ch),ch=='#')//输入要查找的字符,若为#则结束
break;
if(p=strchr(str1,ch))//查找输入的字符
printf("\'%c\' first appeared at subscript %d\n",ch,p-str1);//换算成下标输出
else printf("No find \'%c\'...\n",ch);//提示没有找到
}
return 0;
}
char *charsearch(char *s, char c)
{
char *p = s; /*定义一个指针指向首字符*/
while (*p) { /*当没有到达结尾时*/
if (*p == c) return c; /*如果相等则返回此指针*/
++p; /* 否则把 p 往下移动一位 */
}
return NULL; /* 搜索不到返回 NULL */
}
这里的实现使用指针而不是下标
结合你的代码,你可以这样写:
#include <stdio.h>
char *charsearch(char *s, char c)
{
char *p = s; /*定义一个指针指向首字符*/
while (*p) { /*当没有到达结尾时*/
if (*p == c) return p; /*如果相等则返回此指针*/
++p; /* 否则把 p 往下移动一位 */
}
return NULL; /* 搜索不到返回 NULL */
}
int main(void)
{
char ch[20];
char ch1;
char *p;
scanf("%s",ch);
getchar();
scanf("%c",&ch1);
p = charsearch(ch, ch1);
if (p != NULL)
printf("%d\n", p - ch);
else
printf("Not found\n");
printf("%s\n",ch);
printf("%c\n",ch1);
return 0;
}
int main(void)
{
char ch[20]="";
char ch1;
int i=0;
scanf("%s",ch);
getchar();
scanf("%c",&ch1);
for(i=0;ch[i]!='\0';i++) //这里该应改为 !=
{
if(ch[i]==ch1)
printf("%d\n",i++);
}
printf("%s\n",ch);
printf("%c\n",ch1);
return 0;
}