标题:求解我的小小问题
只看楼主
qiouhongOK
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-4-27
 问题点数:0 回复次数:9 
求解我的小小问题

#include <stdio.h>
void main()
{
char *item=new char[5];
scanf("%s", item);
printf("item = %s", item);
}

输入多于5个字符(但不能多太多),还是可以全部输出!
急求!!!

搜索更多相关主题的帖子: item 求解 char void main 
2007-04-28 11:43
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
得分:0 

你那个就只能输入5个阿
用for(int i=0;i<5; i++)
cin>>item[i];
输出也用循环 就是了 我不会C


fighting!from now on!
2007-04-28 11:52
weishj
Rank: 1
等 级:新手上路
威 望:2
帖 子:141
专家分:0
注 册:2007-4-22
得分:0 
输入字符多于五个时堆内存溢出

If you shed tears when you miss the sun, you also miss the stars.
2007-04-28 18:56
海子
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-7-13
得分:0 

你定义的是一个有五个字符穿指针的数组,而不是志向五个字符的指针!!
可以用以下方法达到你的要求:
#include <stdio.h>
void main()
{
char item[5];
scanf("%s", item);
printf("item = %s", item);
}
现在试试!!

2007-04-28 19:04
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
得分:0 

虽然溢出~``
但你输入的字符是连续存放的~``
所以指针输出当然全都输出了~`
随便说句...那是比较危险的操作...


 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-28 19:11
qiouhongOK
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-4-27
得分:0 
哦,谢了
2007-04-29 20:06
ifeitian
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-5-1
得分:0 
回复:(qiouhongOK)求解我的小小问题

#include <stdio.h>
void main()
{
char *item=new char[5];
scanf("%s", item);
printf("item = %s", item);
}

输入多于5个字符(但不能多太多),还是可以全部输出!
急求!!!
使用new动态分配空间的返回值是空间的首地址,而你用一个指向字符的指针接收相当于定义了一个字符串指针而字符串指针的长度是不确定的因此分配的空间大小是没有用的。
你输入时使用字符串输入格式并用指针名(scanf("%s", item);)所以当你输入时你可以多于五个字符而且当你输完时系统自动加上结束符;你输出时使用字符串输出格式并用指针名(printf("item = %s", item);)所以直到遇到结束符才停止输出因此可以全部输出。


愿如风
2007-05-04 20:21
modelmomo
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-10-22
得分:0 
楼上正解
2007-05-06 22:26



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




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

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