| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 798 人关注过本帖
标题:[求助]看看有什么问题
只看楼主 加入收藏
fresher
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-24
收藏
 问题点数:0 回复次数:11 
[求助]看看有什么问题
#include "stdio.h"
main()
{
char *p1,*p2;
char a[20],b[20];
printf("please input str\n");
scanf("%s%s",a,b);
p1=a;
p2=b;

while(*p1!='\0')
{
p1++;
while(*p2!='\0')
{
*p1=*p2;
p1++;
p2++;
}

puts(a);
getch();
}
功能是连接两个字符串, 有点问题。 请帮忙解决下!
搜索更多相关主题的帖子: include please 字符串 
2006-05-30 17:22
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用fresher在2006-5-30 17:22:00的发言:
#include "stdio.h"
main()
{
char *p1,*p2;
char a[20],b[20];
printf("please input str\n");
scanf("%s%s",a,b);
p1=a;
p2=b;

while(*p1!='\0')
{ /*或者去掉这一对大括号*/
p1++;
}
while(*p2!='\0') /*程序有些地方可以精简的*/
{
*p1=*p2;
p1++;
p2++;
}

puts(a);
getch();
}
功能是连接两个字符串, 有点问题。 请帮忙解决下!


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-30 17:36
fresher
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-24
收藏
得分:0 
这个程序运行后会出现乱码,不知道为什么
2006-05-31 08:55
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
内存泄漏

在puts前面加上*p1 = '\0';

重新看看数组和字符串的区别。

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-31 11:10
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

#include "stdio.h"
main()
{
char *p1,*p2;
char a[20],b[20];
printf("please input str\n");
scanf("%s%s",a,b);
p1=a;
p2=b;

while(*p1!='\0')
{ /*或者去掉这一对大括号*/
p1++;
}
while(*p2!='\0') /*程序有些地方可以精简的*/
{
*p1=*p2;
p1++;
p2++;
}
*p1 = '\0'; /* 这里加一句 */

puts(a);
getch();
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-31 11:11
fresher
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-24
收藏
得分:0 
谢谢
能解释下具体是怎么泄露的么 ?
2006-05-31 12:26
金为床兮银为椅
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2006-3-20
收藏
得分:0 
请斑竹回答这个问题。我的想法也有点模糊,不敢说。

努力学习C、C++、LINUX、ORACLE、ENGLISH,累死为止。
2006-05-31 15:08
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

按理说,没有结束符,和数组尾相邻的内存会被输出!所以后面应该有些乱七八糟的东西输出

这和编译器也有关,不过这个题似乎没有! 不过结束符加上是必要的,也是必须的


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-31 15:15
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
这题没有出现乱码情况.除非你是俩个字符串相加超过20

*p1 = '\0'; 这句根本不用加

因为 例如输入 a[]为'nihao' b[]为"nihaoa"

此时 a[0]-a[4]为字符 而a[4]-a[19]全为'\0'

所以 当b[]最后的'\0'没有赋值过来

输出也是不会泄露的

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-31 15:17
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

更正下TC下俩个字符总数相加 <=13 没有错误

VC和C-FREE 可能多少都有错误.所以还是加的好

不过..书上确实是这么讲的..至于大于13为什么会出现乱码

这个问题...我也不清楚

总之..加是肯定没错的!


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-31 16:17
快速回复:[求助]看看有什么问题
数据加载中...
 
   



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

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