| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1884 人关注过本帖
标题:特别简单的程序,就是不知道为什么它老是重复输出 china
只看楼主 加入收藏
小狮子_
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-8-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:37 
特别简单的程序,就是不知道为什么它老是重复输出 china
例子1:
#include<stdio.h>
#include<string.h>
void main()
{
    char str1[10],str2[]={"China"},str3[3];
    strcpy(str1,str2);
    strncpy(str3,str2,4);
    printf("%s\n",str1);
    printf("%s\n",str3);
}
结果是
图片附件: 游客没有浏览图片的权限,请 登录注册

例子2:
#include<stdio.h>
#include<string.h>
void main()
{
    char str1[22]={"People's Republic of "};
    char str2[]={"China"};
    puts(strcat(str1,str2));
    printf("%s\n",strcat(str1,str2));
}
结果是[local]2[/local]
搜索更多相关主题的帖子: include china China 
2014-08-05 18:35
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:4 
因为这不是stdout,而是stderr,呵呵

梦想拥有一台龙芯3A-4000
2014-08-05 19:14
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
看不懂楼主要说啥

总有那身价贱的人给作业贴回复完整的代码
2014-08-05 19:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
确实特别简单,简单就简单在你不看书、不知道strcat()函数是干什么的就写一气,当然不知道为什么会这样了。顺便说一句:你能得到这种输出,运气是特别的好。

授人以渔,不授人以鱼。
2014-08-05 21:32
tommy_he
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2014-8-5
收藏
得分:4 
学习。
2014-08-05 21:57
小狮子_
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 4 楼 TonyDeng
我就是看着书写的,但是改了一点。包括我把书上的原句打进去输出结果还是有两个china,所以我就没有改回书上的样子。
2014-08-06 18:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
书上没告诉你strcat()是干什么的吗?你的str[]数组容量的22个字符,在后面拼上"china"之后是多少个字符?

授人以渔,不授人以鱼。
2014-08-06 18:23
小狮子_
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 2 楼 ditg
不明白,能说清楚一点吗?
2014-08-06 18:24
小狮子_
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-8-5
收藏
得分:0 
回复 7 楼 TonyDeng
书上是30.可是我试过25也行的
2014-08-06 18:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用小狮子_在2014-8-6 18:25:07的发言:

书上是30.可是我试过25也行的


前面说了,你行是因为运气特别好。如果str1[]的容量不足以容纳拼接之后的字符串,你就绝对不要用strcat()拼出结果,这是必须做的检查,C语言把排除错误的责任推了给你,你一不留神,就此中招,这种代码是地雷。

授人以渔,不授人以鱼。
2014-08-06 18:29
快速回复:特别简单的程序,就是不知道为什么它老是重复输出 china
数据加载中...
 
   



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

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