标题:特别简单的程序,就是不知道为什么它老是重复输出 china
只看楼主
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
刚试了一下,我的有错误提示,按版主的意思,楼主还真是彩票中奖的节奏呀,呵呵

梦想拥有一台龙芯3A-4000
2014-08-06 22:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你最后输出这两个字符串看看。

授人以渔,不授人以鱼。
2014-08-06 22:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
以下是引用小狮子_在2014-8-6 18:41:54的发言:

那应该先学什么?


我向来认为Pascal是最好的入门语言。

授人以渔,不授人以鱼。
2014-08-06 22:43
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
以下是引用TonyDeng在2014-8-6 22:37:34的发言:

你最后输出这两个字符串看看。

刚才测试的时候就考虑了一个问题,本以为串定义的压栈顺序会影响输出,但实际在开栈的时候就会动态调整串的安全执行空间,保证strcat有机会完整输出然后进行assert报错,现在有点懵,慢慢再想想,呵呵

梦想拥有一台龙芯3A-4000
2014-08-06 23:42
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
strcat应该是这个样子吧???

char *strcat(char *dest, char *src)
{
    char *s;

    for (s = dest; *s; ++s)
        ;
    for (; *s = *src; ++s, ++src)
        ;
    return dest;
}

梦想拥有一台龙芯3A-4000
2014-08-06 23:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
回复 24 楼 ditg
那应该是编译器用了C++重载的模板,是较为安全的版本(但似乎只对静态数组适用,动态分配的缓冲区不行),在C中,这向来是禁忌。

授人以渔,不授人以鱼。
2014-08-06 23:55
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
得分:0 
太热天天吹空调感冒了,头大中,等着秋高气爽,河蟹肥的时候再考虑这些问题,呵呵……

梦想拥有一台龙芯3A-4000
2014-08-07 00:03
小狮子_
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-8-5
得分:0 
回复 16 楼 embed_xuel
还有这个程序
#include<stdio.h>
#include<string.h>
void main()
{
    char str1[10],str2[]={"China"},str3[6];
    strcpy(str1,str2);
    strncpy(str3,str2,4);
    printf("%s\n",str1);
    printf("%s\n",str3);
}
结果是
2014-08-07 15:26
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
回复 28 楼 小狮子 _
上网查查strncpy和'\0'之间的关系

总有那身价贱的人给作业贴回复完整的代码
2014-08-07 15:35
小狮子_
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-8-5
得分:0 
回复 29 楼 embed_xuel
看了,感觉它里面不应该是烫烫烫嘛?怎么最后又来了一个china?
2014-08-07 15:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-434738-1-1.html




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

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