| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4892 人关注过本帖
标题:编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是将字符 ...
取消只看楼主 加入收藏
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
结帖率:84.38%
收藏
已结贴  问题点数:10 回复次数:10 
编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是将字符串s1中从第m个字符开始的n个字放入字符串s2中;
编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是将字符串s1中从第m个字符开始的n个字放入字符串s2中;
问题出在什么地方,求高手指出问题的地方
#include"stdio.h"
#include"string.h"
    void sub_str(char *s1,char *s2,int m,int n){
   

    int l1,l2,i;
   
    l2=strlen(s2);
    for(i=1;i<=n;i++)
       {
           
       (s2+l2-1)++=(s1+m-1)++;}
       printf("%s",s2);}
    int main(){
        int m=0,n=0;
        char* s1;
        char* s2;
        char a[80],b[80];
        s1=a;
        s2=b;
       printf("输入字符串1");
       gets(s1);
    printf("输入字符串2");
        gets(s2);
     printf("输入m和n的值");
     scanf("%d %d",&m,&n);
      sub_str(s1,s2,m,n);}

[ 本帖最后由 a271885843 于 2012-1-11 00:31 编辑 ]
搜索更多相关主题的帖子: void include 字符串 
2012-01-10 23:03
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
我要顶上去,不能沉

认为事物非黑即白是缺智慧的表现……
2012-01-10 23:13
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用embed_xuel在2012-1-10 23:34:24的发言:

for(i=m;i<=m+n;i++)
{
       *(s2+l2+i-m)=*(s1+i-1);
}
*(s2+l2+n) = '\0'
 
手机改的,你试试
噢,你这个写法是正确的,能够运行

认为事物非黑即白是缺智慧的表现……
2012-01-11 00:07
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用embed_xuel在2012-1-10 23:34:24的发言:

for(i=m;i<=m+n;i++)
{
       *(s2+l2+i-m)=*(s1+i-1);
}
*(s2+l2+n) = '\0'
 
手机改的,你试试
*(s2+l2+i-m)为什么要-m呢,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,求解,

认为事物非黑即白是缺智慧的表现……
2012-01-11 00:15
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用embed_xuel在2012-1-11 00:26:58的发言:

因为for循环i是从m开始的
明白了。呵呵

认为事物非黑即白是缺智慧的表现……
2012-01-11 00:32
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
问题虽然解决了,但我还是想知道指针的方法为什么有问题,而要通过字符传递的方式才可以

认为事物非黑即白是缺智慧的表现……
2012-01-11 00:34
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用TonyDeng在2012-1-11 14:46:15的发言:
很感谢,真的,明白这节知识点了。如果按数组下标的方式来传递字符,高手请告之漏洞在什么地方啊?

认为事物非黑即白是缺智慧的表现……
2012-01-11 19:59
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用TonyDeng在2012-1-11 14:46:15的发言:
我是这样理解的,你看对不对。如果是按指针s2+l2-1)++=(s1+m-1)++;这样做算法上没问题,但是由于s1,s2都是定义的char型指针变量,如果在在表达式中加上l2,m之类的常量,在编译器中其常量的值就等于扩大了4倍,而如果只是单纯的s2++=s1++,就不会有问题,可以这样理解吗?

认为事物非黑即白是缺智慧的表现……
2012-01-11 20:05
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用a271885843在2012-1-11 20:05:10的发言:

我是这样理解的,你看对不对。如果是按指针s2+l2-1)++=(s1+m-1)++;这样做算法上没问题,但是由于s1,s2都是定义的char型指针变量,如果在在表达式中加上l2,m之类的常量,在编译器中其常量的值就等于扩大了4倍,而如果只是单纯的s2++=s1++,就不会有问题,可以这样理解吗?
貌似单纯的s2++=s1++也有问题耶,晕。

认为事物非黑即白是缺智慧的表现……
2012-01-11 20:08
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用TonyDeng在2012-1-11 20:59:02的发言:

你這個算法,假設語法沒有問題,撇開小細節,漏洞主要在沒有考慮m和n與數組的關係。比如,m超界了,或者m+n超界了。用這個題目的例子,我待會在你另外帖子上給你講一下,就是如何學那個。
嗯。静候,这两天接受的新知识确实较多,思路有点紊乱了,呵呵

认为事物非黑即白是缺智慧的表现……
2012-01-11 21:41
快速回复:编写一个求字串的函数sub_str(char *s1,char *s2,int m,int n),作用是 ...
数据加载中...
 
   



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

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