十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我也试了一下,没问题,你到底是什么问题,是要在s1或s2中输入空格吗?那么用gets函数;
成都创新互联服务电话:13518219792,为您提供成都网站建设网页设计及定制高端网站建设服务,成都创新互联网页制作领域十余年,包括花箱等多个行业拥有多年的网站维护经验,选择成都创新互联,为企业锦上添花。
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。
其调用格式为:gets(s);
其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s:",s)/*scanf("%s",s)*/相似,但不完全相同,使用scanf("%s",s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
你改为:
#includestdio.h
voidmain()
{chars1[50],s2[50];
gets(s1);
gets(s2);
printf("%s\n",s1);
printf("%s\n",s2);
}
这样就用回车表示输入结束
由于测试,我代码中“要查找的字符串”和“目标字符串”,我都用常量赋值了。如果你想写手动输入字符串或从文件读取,自己写输入赋值给这个两个变量就行。
代码主要功能:SINX *findStr(int benIndex,char *tStr,char *fStr);
从目标字符串tStr中查找指定的字符串fStr,benIndex是查找的起始位置,首次调用benIndex=0。
查找下一个时,benIndex取上次查找返回值SINX-endIndex+1。
#include stdio.h
#include malloc.h
#include string.h
typedef struct strIndex//查找字符串在目标字符串中首字符下标和尾字符下标
{
int benIndex;
int endIndex;
}SINX;
SINX *findStr(int benIndex,char *tStr,char *fStr);//benIndex:查找的起始下标。找到则返回对应下标结构,未找到返回NULL
int main()
{
SINX *findSINX=NULL;
int n,benIndex=0;
//tStr:目标字符串,fStr:要查找的字符串
char *tStr="djasdasl aaa djsalkdjsakdj aaa dsakd;sakd;all";
char *fStr="aaa";
printf("查找字符串:\n%s\n",fStr);
printf("目标字符串:\n%s\n",tStr);
while(1)
{
findSINX=findStr(benIndex,tStr,fStr);
if(findSINX)
{
printf("\n找到!!,首字符在第%d个字符位置,尾字符在第%d个字符位置\n",findSINX-benIndex+1,findSINX-endIndex+1);
printf("\n1、查找下一个;2、结束; 输入:");
n=scanf("%d",n);
if(n==1)
benIndex=findSINX-endIndex+1;
else
break;
}
else
break;
}
return 0;
}
SINX *findStr(int benIndex,char *tStr,char *fStr)//benIndex:查找的起始下标。找到则返回对应下标结构,未找到返回NULL
{
int tLen=strlen(tStr),fLen=strlen(fStr),i,j,k;
SINX sinx,*reSINX=NULL;
sinx.benIndex=sinx.endIndex=-1;
for(i=benIndex;itLen;i++)
{
k=i;
for(j=0;jfLen;j++)
{
if(tStr[k]!=fStr[j])
break;
else
if(sinx.benIndex==-1)
sinx.benIndex=k;
k++;
}
if(j==fLen)
{
sinx.endIndex=k-1;
break;
}
else
sinx.benIndex=sinx.endIndex=-1;
}
if(sinx.benIndex==-1)
return NULL;
reSINX=(SINX *)malloc(sizeof(SINX));
if(!reSINX)
{
printf("异常!查找失败!");
return NULL;
}
*reSINX=sinx;
return reSINX;
}
结果出来了,你看看吧,满意请采纳
#include stdio.h
#include string.h
void finddd(char x[]);
int main()
{
char a[150];
char *aa;
int a1;
int i;
printf("请输入任意的字符串: ");
gets(a);
finddd(a);
return 0;
}
void finddd(char x[]) // 不带数据返回
{
int i,shu=0;
char aa[100];
int aaa[200]={0};
for(i=0;istrlen(x);i++)
{
if(aaa[ x[i] ] == 0)
{
aaa[ x[i] ] = 1;
aa[shu++]=x[i];
}
}
aa[shu++]='\0';
printf("剔除重复字符后的字符串: %s\n",aa);
}
C语言中的标准函数库中的strchr()函数可以实现查找字符串中的某个字符。
C语言strchr()函数:
查找某字符在字符串中首次出现的位置
头文件:#include string.h
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);
【参数】str 为要查找的字符串,c 为要查找的字符。
strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。
【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。
用strstr这个函数
包含文件:string.h
函数名: strstr
函数原型:extern char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
返回值:返回该位置的指针,如找不到,返回空指针。