回 帖 发 新 帖 刷新版面

主题:[讨论]麻烦:gets();如何使用?


char *a=0;
gets(a);
…我用borlandc3.1编译通过,但输入字符串时有时候出现 NULL POINTER ASSIGNMENTS,有时候正常。*a=0;  a变量存有地址值吗?还是没有指向?a==NULL?gets(a);是找到地址a,从a开始输入字符串,如果赋值a任意地址应该就正常了吧?但是否会因输入字符串占用a后的字节覆盖有用数据产生错误?用a[10]或malloc能正常但浪费内存字节。有办法gets(a)不浪费内存字节又动态调整a的存放空间吗?
请大哥们帮我想想上面的问号?谢谢

回复列表 (共3个回复)

沙发

你把字符窜放到哪里啦?总得事先开辟空间吧。
在C里面没有你想要的那样的好事,除非你自己写一个比较复杂的代码段来做到。在C++里面你可以用getline读一行。

板凳

一般而言,0地址和NULL指针是一样的。NULL指针只能用来赋值和作比较,其他一切行为都是未定义的,产生的行为依赖于编译器的实现。或者说,用NULL指针来标记“这是一个特殊的地址,不能随便对它进行操作”。绝大多数编译器把这个特殊的地址设计成不可读不可写(有例外),如果程序却要访问或写这个地址,当然会出现读写违例。相应的,有些地址是只读的,不能对其进行写入数据。

如果您随便给一个指针赋值,当然也不行。如果那个地址不能写,而硬要执行写操作,又或者不能读,而硬要访问它,这些都会产生错误。定义一个变量,就会分配一块空间(一般是可读可写),以后就可以在这块空间对数据操作了。真是这个原因,指针一定要先指向一块可用空间,才能对指针指向的地方进行读或写操作。其他的指针一般没任何意义。
数据被覆盖不会出错,但很有可能造成溢出而成为bug.

3 楼



At this [url=http://www.ccqdiy.com]重庆团购[/url] maximal rate of hate decay, the time taken for the warrior's threat to decay to 90% of the original value would be 26.5 hours. In fact, if a warrior logged in [url=http://www.mmopowerlevel.net/powerlist.php?fid=688]buy wow item[/url] as soon as the server came online after the weekly reset and hit a mob, his threat would not decay to 50% before the server reset next week. I think this is [url=http://www.mmopowerlevel.net/powerlist.php?fid=688]buy wow gear[/url] enough to rule out threat decay. 
5) Threat values for some warrior abilities Updated Jan 20 
The following list is not exhaustive, but [url=http://www.ccqdiy.com]重庆二手交易[/url] includes all the major tanking abilities. 
Note: the following values [url=http://www.ccqdiy.com]重庆二手手机[/url] are given in raw terms. In reality the warrior must have either a 1.3 or 0.8 or 1.45 modifier on these, depending on his stance and talents. 
Note: * All abilities do not include threat generated by their damage. This [url=http://www.ccqdiy.com]重庆二手电脑[/url] will be discussed more later. 

我来回复

您尚未登录,请登录后再回复。点此登录或注册