| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8628 人关注过本帖
标题:求一字符串在另一字符串中首次出现的位置
只看楼主 加入收藏
a1067942077
Rank: 2
等 级:论坛游民
帖 子:36
专家分:11
注 册:2016-10-15
结帖率:38.46%
收藏
已结贴  问题点数:10 回复次数:4 
求一字符串在另一字符串中首次出现的位置
求一字符串在另一字符串中首次出现的位置  
若str1不在str2中返回-1
若str1出现在str2中返回首次出现的地址
EX:  str1为“do”   str2为“how do you do”   返回 4
#include<stdio.h>
#include<string.h>

int strloc(char str1[],char str2[]);
int main()
{
    char str1[5],str2[15];
    int loc;
    gets(str1);
    gets(str2);
    loc=strloc(str1,str2);
    if(loc==-1)
        printf("error");
    else
        printf("%Locatin of the string is %d",loc);
}

int strloc(char str1[],char str2[])
{
    int i;
    int flag=0;
    for(i=0;str2[i]=='\0';i++)
    {
        if(strcpy(str1,str2[i])==0)
        {
           flag=1;
           return (i);
            break;
        }
    }
    if(flag==0)
        return (-1);

}

两条报错
error:   initializing argument 2 of 'char* strcpy(char*, const char*)' [-fpermissive]|
error: invalid conversion from 'char' to 'const char*' [-fpermissive]|
搜索更多相关主题的帖子: include 字符串 
2016-11-20 15:52
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:5 
if(strcpy(str1,str2[i])==0)   ,比较是strcmp吧, 条件不对
 要满足A字符串中要有和B字符串一模一样的字符串
 

早知做人那么辛苦!  当初不应该下凡
2016-11-20 16:13
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
if(strcpy(str1,str2[i])==0)   ,比较是strcmp吧, 条件不对
 要满足A字符串中要有和B字符串一模一样的字符串
 

早知做人那么辛苦!  当初不应该下凡
2016-11-20 16:13
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
报错只是小问题,但子函数似乎写得很乱而且问题很多,即使改正也不能正常运行。
我帮你修改子函数,看看效果如何~
程序代码:
#include<stdio.h>
#include<string.h>

int strloc(char str1[],char str2[]);
int main()
{
    char str1[5],str2[15];
    int loc;
    gets(str1);
    gets(str2);
    loc=strloc(str1,str2);
    if(loc==-1)
        printf("error\n");
    else
        printf("Locatin of the string is %d\n",loc);
}

int strloc(char str1[],char str2[])
{
    if (strstr(str2,str1)==NULL)//找出字符串str1首次出现在str2的位置,如果找不到,返回空指针~
        return (-1);
    else 
        *(strstr(str2,str1)+1)='\0';//当然,这里已经动了str2的字符串了,如果不想动原来的,可以另外用一个str3来复制str2
    return(strlen(str2));//返回修改后字符串的长度,即第一次出现目标字符串的位置
}/*附加一句,这程序设定how do you do第一次出现do 的位置是5,不是4。如果想改为4,则直接把*(strstr(str2,str1)+1)='\0';
改为*strstr(str2,str1)='\0';就行了*/

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-20 16:24
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 2楼 炎天
既然提到这个问题,那就顺便补充一下:strcmp是当两个字符串一样的时候才为0,不能满足这条题的目标出字符串首次在原字符出现的位置的要求。找出str2字符串在str1中第一次出现的位置用strstr函数~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-20 16:31
快速回复:求一字符串在另一字符串中首次出现的位置
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026947 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved