当前位置: 代码迷 >> C语言 >> 一个字符串的问题
  详细解决方案

一个字符串的问题

热度:75   发布时间:2007-10-30 18:20:58.0
一个字符串的问题

#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];
----------------解决方案--------------------------------------------------------
  相关解决方案