描述
编写一个函数,返回当前字符的下一次出现的地址。如果不存在,返回NULL。
调试main函数代码如下:
#include <stdio.h>
int main()
{
char *FindNextChar(char *,char *ch);
char s[1024],ch;
scanf("%s%*c%c",s,&ch);
char *pPos=NULL;
for(pPos=s;*pPos;pPos++)
if(*pPos==ch)
break;
if(*pPos!='\0')
pPos=FindNextChar(s,pPos);
else
pPos=NULL;
if(pPos==NULL)
printf("npos");
else
printf("%d",pPos-s);
return 0;
}
输入
输入一个字符串和一个字符,中间用一个空格分开。字符只有英文字符。
输出
输出字符的第二次出现位置。如果没有,则输出npos。
样例输入
aaaaa a
样例输出
1
#include <stdio.h>
int main()
{
char *FindNextChar(char *,char *ch);
char s[1024],ch;
scanf("%s%*c%c",s,&ch);
char *pPos=NULL;
for(pPos=s;*pPos;pPos++)
if(*pPos==ch)
break;
if(*pPos!='\0')
pPos=FindNextChar(s,pPos);
else
pPos=NULL;
if(pPos==NULL)
printf("npos");
else
printf("%d",pPos-s);
return 0;
}
char *FindNextChar(char *s,char *ch)
{
int i,t,m,j;
for(i=0;s[i]!='\0';i++)
if(s[i]==*ch)
{
t=i;
break;
}
for(j=t+1;s[j]!='\0';j++)
if(s[j]==*ch)
{
m=j;
break;
}
if(m==j)
return m+s;
else
return NULL;
}