当前位置: 代码迷 >> C语言 >> 问一个问题,烦恼了很久了
  详细解决方案

问一个问题,烦恼了很久了

热度:262   发布时间:2007-08-21 23:29:14.0
问一个问题,烦恼了很久了
下面这段代码在TC中能够正常的编译、连接、运行。
可是在VC中能够编译,连接,却不能运行,
一运行就崩溃。
#include <stdio.h>
main()
{
char *s;
scanf("%s",s);
printf("%s",s);
getch();
}
搜索更多相关的解决方案: 烦恼  main  char  getch  include  

----------------解决方案--------------------------------------------------------
you did not allocate memory for your buffer.

try

char s[100];
----------------解决方案--------------------------------------------------------
char *s;
最好不要这样使用~~
----------------解决方案--------------------------------------------------------
http://bbs.bc-cn.net/viewthread.php?tid=163571
看这里吧
----------------解决方案--------------------------------------------------------

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

谢谢


----------------解决方案--------------------------------------------------------
这是由于C和VC编译方法不同造成的.
关键是你的指针没有进行初始化就被用了,这样它指向的是一随机的地址.
你可以在使用指针前给它分配内存先:

s=new char[N];

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



----------------解决方案--------------------------------------------------------
c语言论坛呀
本题未分配空间
----------------解决方案--------------------------------------------------------
以下是引用zzcko在2007-8-22 6:47:03的发言:
这是由于C和VC编译方法不同造成的.
关键是你的指针没有进行初始化就被用了,这样它指向的是一随机的地址.
你可以在使用指针前给它分配内存先:

s=new char[N];

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



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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
以下是引用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)

好像不可以呀


----------------解决方案--------------------------------------------------------
  相关解决方案