| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1399 人关注过本帖
标题:求助:K&R2 课后练习题 5-3 利用指针实现strcat(s, t)
只看楼主 加入收藏
xiaolaoshucj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:15
注 册:2011-6-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
求助:K&R2 课后练习题 5-3 利用指针实现strcat(s, t)
大家好,
我正在做Brian W. Kernighan和Dennis M. Ritchie编的<C程序设计语言>的课后题5-3.
题目如下:
用指针的方式实现函数strcat(s, t),使t指向的字符串复制到s指向的字符串的尾部.即:将字符串t接到字符串s的尾部.
我的解答如下:
程序代码:
#include <stdio.h>
void strcat1(char *s, char *t);

main()
{
    char a[] = "abc";
    char b[] = "def";
    printf("%s\n%s\n", a, b);
    strcat1(a, b);
    printf("%s\n", a);
}


void strcat1(char *s, char *t)
{
    while (*s++)
        ;
    while (*s++ = *t++)
        ;
}

我预计的结果是:
abc
def
abcdef

但输出结果是:
abc
def
abc

请大家帮忙看看问题出在哪里?或者说我错在哪里?
谢谢大家.


[ 本帖最后由 xiaolaoshucj 于 2011-6-19 00:06 编辑 ]
搜索更多相关主题的帖子: color 字符串 练习题 程序设计 
2011-06-19 00:04
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:20 
strcat1函数改成如下:
void strcat1(char *s, char *t)
{
    while (*s++)
        ;
    s--;
    while (*s++ = *t++)
        ;
}

********多贴代码,少说空话*******
2011-06-19 01:35
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:0 
mian中数组的定义最好指明大小,char a[10] = "abc";

********多贴代码,少说空话*******
2011-06-19 01:36
xiaolaoshucj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:15
注 册:2011-6-18
收藏
得分:0 
回复 2楼 ppfly
非常感谢ppfly的解答。
你的解答完全达到预计的效果。
2011-06-19 16:53
xiaolaoshucj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:15
注 册:2011-6-18
收藏
得分:0 
回复 3楼 ppfly
追问一下:
char s[10] = "abc"
会不会使数组s的存储空间变为4,
|a|b|c|\0|
而不是10?

另外,之前我也把数组定义为10个,问题没有解决.
2011-06-19 17:02
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:0 
不影响。
如果不加的话可能会程序崩溃。定义数组的时候最好指明大小,这是个好习惯。

********多贴代码,少说空话*******
2011-06-19 21:02
xiaolaoshucj
Rank: 2
等 级:论坛游民
帖 子:26
专家分:15
注 册:2011-6-18
收藏
得分:0 
回复 6楼 ppfly
如果数组为
char a[4]="abc"
char b[4]="def"
调用函数strcat1(a, b)后,
数组a是不是变为了7个存储空间了,而不是4个了呢?

2011-06-19 21:38
快速回复:求助:K&R2 课后练习题 5-3 利用指针实现strcat(s, t)
数据加载中...
 
   



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

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