| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 451 人关注过本帖
标题:怎么没返回字符?
只看楼主 加入收藏
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
结帖率:90.63%
收藏
已结贴  问题点数:20 回复次数:12 
怎么没返回字符?
/*
用字符指针变量作函数参数
将两字符串连接在一起
*/
#include "stdio.h"
void main()
{
    void istrcat(char *p1, char *p2);
    char str[100], ptr[50];
    gets(str);
    gets(ptr);
    istrcat(str,ptr);
    puts(str);
}

void istrcat(char *p1, char *p2)
{
    int i=0, j=0;
    char *p=p1, *q=p2;
    for(i=0; *(p+i) != '\0'; i++)
    {
        i++;
    }
    for(j=0; *(q+j) != '\0'; j++)
    {
        *(p+i)=*(q+j);
        i++;
        j++;
    }
    *(p+i)='\0';
}
//什么错误,如何修改?要注意什么?

[ 本帖最后由 chen1204019 于 2012-12-20 21:50 编辑 ]
搜索更多相关主题的帖子: 如何 字符串 include 
2012-12-20 20:59
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:10 
哥们,逻辑错误啊
程序代码:
#include "stdio.h"
void main()
{
    void istrcat(char *p1, char *p2);
    char str[100], ptr[50];
    gets(str);
    gets(ptr);
    istrcat(str,ptr);
    puts(str);
}

void istrcat(char *p1, char *p2)
{
    int i=0, j=0,x;
    char *p=p1, *q=p2;
    for(i=0; *(p+i) != '\0'; i++);
    for(j=0; *(q+j) != '\0'; j++);
    for(x=0;x<=j+1;x++)
        *(p+i+x)=*(q+x);
}
这样你试试看

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-20 21:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
第一个循环 你应该把p1的指针移动到末尾  但是你的p实际并没动 还是初始位置呢

DO IT YOURSELF !
2012-12-20 21:14
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 3楼 wp231957
第二个循环中,*(p+i)不是指向了字符串的最后那个位置吗?

新手发言,请多指教!
2012-12-20 21:51
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
楼主,第2个循环 怎么有2个J++  你觉得对吗

DO IT YOURSELF !
2012-12-20 21:57
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
回复 5楼 wp231957
他的第一个循环两个i++貌似也不对啊,如果推出之前的那个循环*(p+i)刚好指向最后一个不是'\0'的字符,那新的结合之后的字符串不是要在中间部分引入'\0',之后的操作不就没意义了吗?



本人新手,飘过

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-20 22:03
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用yaobao在2012-12-20 22:03:55的发言:

他的第一个循环两个i++貌似也不对啊,如果推出之前的那个循环*(p+i)刚好指向最后一个不是'\0'的字符,那新的结合之后的字符串不是要在中间部分引入'\0',之后的操作不就没意义了吗?



本人新手,飘过
第一个循环到无所谓,反正他的目的就是移动指针

DO IT YOURSELF !
2012-12-20 22:09
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 5楼 wp231957
我发现我问题在哪里了,问题在循环后用i++,然后上面判断语句又是i++即是+2了,下面j也一样,只要去掉{}中i++和j++就可以了!

新手发言,请多指教!
2012-12-20 22:09
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
好嘛,没理我,算我过度热情吧,飘过

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-20 22:14
麦香
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:65
专家分:163
注 册:2011-10-18
收藏
得分:5 
程序代码:
#include "stdio.h"
void main()
{
    void istrcat(char *p1, char *p2);
    char str[100], ptr[50];
    gets(str);
    gets(ptr);
    istrcat(str,ptr);
    puts(str);
}

void istrcat(char *p1, char *p2)
{
    int i=0, j=0;
    char *p=p1, *q=p2;
    for(i=0; *(p+i) != '\0'; i++)
    {
        i++;//多了
    }
    for(j=0; *(q+j) != '\0'; j++)
    {
        *(p+i)=*(q+j);
        i++;
        j++;//多了
    }
    *(p+i)='\0';
}




貌似动作太慢了

[ 本帖最后由 麦香 于 2012-12-20 22:24 编辑 ]

你们要进窄门,因为引向灭亡的门是宽的,路是大的,进去的人也多。
2012-12-20 22:22
快速回复:怎么没返回字符?
数据加载中...
 
   



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

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