| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1339 人关注过本帖
标题:问一个问题,烦恼了很久了
只看楼主 加入收藏
skyzwch
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-8-21
收藏
 问题点数:0 回复次数:15 
问一个问题,烦恼了很久了
下面这段代码在TC中能够正常的编译、连接、运行。
可是在VC中能够编译,连接,却不能运行,
一运行就崩溃。
#include <stdio.h>
main()
{
char *s;
scanf("%s",s);
printf("%s",s);
getch();
}
搜索更多相关主题的帖子: 烦恼 main char getch include 
2007-08-21 23:29
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
you did not allocate memory for your buffer.

try

char s[100];

I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-21 23:31
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
收藏
得分:0 
char *s;
最好不要这样使用~~
2007-08-21 23:33
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
http://bbs.bc-cn.net/viewthread.php?tid=163571
看这里吧
2007-08-21 23:39
skyzwch
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-8-21
收藏
得分:0 

用数组的方式来分配内存,数组的下标不能太大。
我的意思是能不能让程序自己根据字符串的数量来自动分配内存。

谢谢

2007-08-21 23:40
zzcko
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-8-13
收藏
得分:0 
这是由于C和VC编译方法不同造成的.
关键是你的指针没有进行初始化就被用了,这样它指向的是一随机的地址.
你可以在使用指针前给它分配内存先:

s=new char[N];

这个N可以是你想要的大小(当然,在你的电脑支持的前提下).


2007-08-22 06:47
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
收藏
得分:0 
c语言论坛呀
本题未分配空间

惟有学习不断的学习!
2007-08-22 08:18
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
以下是引用zzcko在2007-8-22 6:47:03的发言:
这是由于C和VC编译方法不同造成的.
关键是你的指针没有进行初始化就被用了,这样它指向的是一随机的地址.
你可以在使用指针前给它分配内存先:

s=new char[N];

这个N可以是你想要的大小(当然,在你的电脑支持的前提下).



加上的这句话好像有问题,编译报错。 new运算符不是java、c++中的吗


2007-08-22 11:18
zzcko
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-8-13
收藏
得分:0 

是,你不是在VC中编译的吗,所以用了NEW

2007-08-22 11:30
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
以下是引用zzcko在2007-8-22 11:30:47的发言:

是,你不是在VC中编译的吗,所以用了NEW

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

编译环境VC6.0

error C2065: 'new' : undeclared identifier
warning C4047: '=' : 'char *' differs in levels of indirection from 'int '
error C2143: syntax error : missing ';' before 'type'
Error executing cl.exe.

test.exe - 2 error(s), 1 warning(s)

好像不可以呀


2007-08-22 12:19
快速回复:问一个问题,烦恼了很久了
数据加载中...
 
   



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

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