一个字符串的问题
#include<stdio.h>
int main(void)
{
char *s;
scanf ("%s",s);
printf ("%s",s);
getch();
return 0;
}
很简单的字符串输入输出
为什么在DEV-C++里运行输入后就显示程序错误
而WIN-TC里则可以运行....
想不通...请教
搜索更多相关的解决方案:
字符
----------------解决方案--------------------------------------------------------
s 的值因为是运行的时候才在栈中临时分配的,其值是不确定的.
虚拟86模式和保护模式下对内存的访问和保护是不一样的,保护模式下要严格多,对不允许读或写的地址空间进行读或写操作会引起通用保护异常
----------------解决方案--------------------------------------------------------
哦。。。谢谢。。
那应该怎样使用?
[此贴子已经被作者于2007-10-30 20:47:51编辑过]
----------------解决方案--------------------------------------------------------
是不是应该printf ("%s",*s)?
----------------解决方案--------------------------------------------------------
LS这样更错````
而WIN-TC里则可以运行....``这说明了WIN-TC的检查错误能力不好```
我的意见是 先定义一个字符数组s[]``再scanf("%s",s);
----------------解决方案--------------------------------------------------------
为什么?
----------------解决方案--------------------------------------------------------
回复:(jxt598598)为什么?[em09]
因为定义数组,就相当于开辟了一个内存如果是指针,则由于指针没有初始化,所以指针指向的地方可能是某些重要地方,这样使用指针是很危险的
你可以用 char *s = (char *)malloc(sizeof(char));
----------------解决方案--------------------------------------------------------
哦
----------------解决方案--------------------------------------------------------
谢谢7楼。。。
----------------解决方案--------------------------------------------------------
没有分配空间,输入的字符串放哪?
可以这样:
char *s;
s=malloc(10);
或者定义个数组char s[10];
----------------解决方案--------------------------------------------------------