问一个问题,烦恼了很久了
下面这段代码在TC中能够正常的编译、连接、运行。可是在VC中能够编译,连接,却不能运行,
一运行就崩溃。
#include <stdio.h>
main()
{
char *s;
scanf("%s",s);
printf("%s",s);
getch();
}
----------------解决方案--------------------------------------------------------
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可以是你想要的大小(当然,在你的电脑支持的前提下).
这是由于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)
好像不可以呀
----------------解决方案--------------------------------------------------------