| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:free 求解!
只看楼主 加入收藏
Cking
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-23
收藏
 问题点数:0 回复次数:9 
free 求解!

刚参加完alcatel-lucent的笔试,有2个题不会请大家指点一下!
1
main()
{
char * str =(char *)malloc(sizeof(100));
strcpy(str, "hello");
free(str);
if(str != Null)
{
strcpy(str,"world");
printf(str);
}
}
这里面那行出错了,原因是什么?还有printf里面的参数怎么直接是个指针,连个格式都没有?

2
main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d%d%d",a,b,c);
}
如果输出是123456789,那输入值是什么?

搜索更多相关主题的帖子: free 求解 
2007-10-23 12:17
huawang99
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2007-1-28
收藏
得分:0 
第一个程序中如果把“Null”改为NULL,并且在开头加入“#include <stdlib.h>”就可以正常运行的
第二个程序输入“123 456 789”的话,输出就为“123456789”,^_^,原来如此简单。

[此贴子已经被作者于2007-10-23 13:04:30编辑过]


2007-10-23 12:28
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

我说说:1应该是这样的红色有错(你的)
#include<stdio.h>
#include<malloc.h>
#include<string.h>

void main()
{
char *str =(char *)malloc(sizeof(100));
strcpy(str, "hello");
free(str);
if(str != NULL)
{
strcpy(str,"world");
printf("%s",str);
}
}
free是释放str,然后在检查如个没有释放的话就在付值,再打印
第二个:主要是考虑int 的取值范围看是16位,还是32位,然后输入a,b,c(正整数)再打印


方寸之内,剖天下; 方坛之内,析自我;
2007-10-23 12:35
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用Cking在2007-10-23 12:17:04的发言:

刚参加完alcatel-lucent的笔试,有2个题不会请大家指点一下!
1
main()
{
char * str =(char *)malloc(sizeof(100));
strcpy(str, "hello");
free(str);
if(str != Null)
{
strcpy(str,"world");
printf(str);
}
}
这里面那行出错了,原因是什么?还有printf里面的参数怎么直接是个指针,连个格式都没有?
虽然free把空间释放了,但首地址为NULL.然后将字符串复制过去.
printf() 之所以这样做,是因为str就是一个字符串,要知道和printf("hdsdsfds");
是一样的道理.格式也是一个字符串,不是吗,它按原样输出.
2

main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d%d%d",a,b,c);
}
如果输出是123456789,那输入值是什么?
好多种啊 12 345 6789 或者123 456 789 ...(只要不要超过范围就行)


倚天照海花无数,流水高山心自知。
2007-10-23 12:37
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

我的加了还是不能
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>

void main()
{
char *str =(char *)malloc(sizeof(100));
strcpy(str, "hello");
free(str);
if(str != NULL)
{
strcpy(str,"world");
printf("%s",str);
}
}


方寸之内,剖天下; 方坛之内,析自我;
2007-10-23 12:37
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
nuciewth
说说为什么?我上面的,VC6.0

方寸之内,剖天下; 方坛之内,析自我;
2007-10-23 12:39
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

我的错误是:

图片附件: 游客没有浏览图片的权限,请 登录注册


方寸之内,剖天下; 方坛之内,析自我;
2007-10-23 12:46
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

我相信有的编译器一定可以通过.
我前面有个说错了,它的地址应该还是保持原样的.只是没有空间.
从理论上说,在这里,前面已经在空间给释放了,那下面的strcpy还怎么做.
if(str != NULL)
{
strcpy(str,"world");
printf("%s",str);
}


倚天照海花无数,流水高山心自知。
2007-10-23 12:47
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

谢谢了哦!


方寸之内,剖天下; 方坛之内,析自我;
2007-10-23 12:53
Cking
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-9-23
收藏
得分:0 

谢谢大家!
那第1个是strcpy(str,"world");错了,是因为没有空间了?
那第2个,没有说多少位机。


2007-10-23 17:57
快速回复:free 求解!
数据加载中...
 
   



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

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