已解决问题 - 浏览137次

下一个已解决问题

过客

121.41.236.*

gets函数 来源于网页  来源:网页搜索

gets函数在存储输入的字符串时有长度限制吗? C语言怎样保证返回地址的函数所返回的地址代表的存储空间不被其他程序使用?

还可输入300个字

请输入上图中的验证码,字母不区分大小写。

点击查看更多 gets 函数 相关信息

武林高手武林高手

饱学秀才

最佳答案 - 由投票者2008-07-31 15:42:04选出

不能保证。此函数在C语言里,读取字符串的一个函数,字符串将要存储的空间是有编程人员给出的!系统不会管你这一块内存是不是有效内存!
比如,
{
int a,b,c;
gets((char *)&a);
printf("%d,%d,%d");
}
如果输入22222<回车>,这样的代码运行结果是什么?
12850,12850,12800
为什么?
int a,b,c;在内存中定义了连续6个字节的存储空间;
gets((char *)&a);要读取控制台输入的字符串,存储到变量a的存储位置上,而输入的22222和结尾0,是6个字节,就是\x32\x32\x32\x32\x32\0,转成a、b、c就是:50*256+50=12850,50*256+50=12850,50*256=12800

0 0

还可输入300个字

请输入上图中的验证码,字母不区分大小写。

其他回答(2)

  • huangqianxuhuangqianxu

    伴读书童

    gets函数为c++ 里专门输入字符串的的函数,本身对字符串的长度没有定义,至于是否被其他程序占用空间就不得而知了!

    还可输入300个字

    请输入上图中的验证码,字母不区分大小写。

  • Java嬰儿Java嬰儿

    中举

    字符串没有长度限制,C语言在每一字符串后面都会加上"/0"作为结束符的.

    例如:
    字符串:"I LIKE C"
    在C里面是这样的:"I(空格)LIKE(空格)C/0"
    就是这样,怎么会出现存储问题呢?

    其他程序使用的内存空间是系统分配好的,如果系统发现C的参数使用某一部分空间,系统会划分新的空间给其他程序使用.这叫协调.

    还可输入300个字

    请输入上图中的验证码,字母不区分大小写。

返回知识堂首页>>

猜你喜欢看

更多
1