| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 710 人关注过本帖
标题:用指针对字符串加以调控的小题
只看楼主 加入收藏
川普女婿
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
用指针对字符串加以调控的小题
删除字符串str1中的所有子串str2。如str1="abcdabac",str2="ab",计算结果:str1="cdac"。
搜索更多相关主题的帖子: 字符串 
2016-12-08 00:03
川普女婿
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-25
收藏
得分:0 
C语言学了指针之后,虽然了解了相关知识,但是需要用到指针时总是觉得脑中空空,不知道该如何运用指针,我觉得这不是一句“多练习”就可以解决的,相信很多初学者都会用这样的感受,还请前辈指点!
2016-12-08 00:13
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10567
专家分:43011
注 册:2014-5-20
收藏
得分:5 
#include <stdio.h>
#include <string.h>

main()
{
    char *p, str1[]="abcdabac", *str2="ab";
    int len=strlen(str2);
    for (p=strstr(str1,str2); p; p=strstr(p,str2))
    {
        *p = 0;
        strcat(str1, p+len);
    }
    puts(str1);
}
2016-12-08 05:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
回复 3楼 吹水佬

*p = 0;
strcat(str1, p+len);
还不如用
strcpy( p, p+len );

但都是不对的,因为C标准中说“If copying takes place between objects that overlap, the behavior is undefined.”
2016-12-08 08:40
川普女婿
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-25
收藏
得分:0 
在不使用库函数的条件下,上述题目还能实现吗?
2016-12-08 10:40
川普女婿
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-11-25
收藏
得分:0 
从字符串的最后向前比较,遇到"ab"就把它后面的字符向前挪,将它覆盖,这样编写一个函数代替strstr函数,
int delstr(char *str1,char *str2)
{
    int size1=strlen(str1);
    int size2=strlen(str2);
    int num=0,i,j;
    for(j=size1-size2;j>=0;j--)
    {
        for(i=0;i<size2;i++)
            if(str1[j+i]!=str2[i])break;
        if(i==size2)
        {
            i=j;
            while((str1[i]=str1[i+size2])!='\0')
                i++;
            num++;
        }
    }
    return num;
}
但不知道我写的对不对,还请前辈指教!
2016-12-08 10:51
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10567
专家分:43011
注 册:2014-5-20
收藏
得分:5 
以下是引用rjsp在2016-12-8 08:40:09的发言:


*p = 0;
strcat(str1, p+len);
还不如用
strcpy( p, p+len );

但都是不对的,因为C标准中说“If copying takes place between objects that overlap, the behavior is undefined.”

*p=0, 是想一分二串连接,这时不知还算不算“重叠”行为?
个人就不太执着一些抽象的概念,坚信只要能过得海就是仙。
2016-12-08 10:53
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10567
专家分:43011
注 册:2014-5-20
收藏
得分:5 
以下是引用川普女婿在2016-12-8 10:40:40的发言:

在不使用库函数的条件下,上述题目还能实现吗?

肯定能
2016-12-08 10:54
快速回复:用指针对字符串加以调控的小题
数据加载中...
 
   



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

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