c语言gets函数

#include"stdio.h"main(){charst[15];printf("inputstring:\n");get(st);put(st);}输入:Iamas... #include"stdio.h"
main()
{char st[15];
printf("input string :\n");
get(st);
put(st);}
输入:I am a student.这里正好是15个,请问字符串不是总是以'\0'作为串的结束符,那么这里st[15]应该改成st[16]才是正确的,请问是不是书上写错了
展开
 我来答
dbzhang800
2008-09-23 · TA获得超过188个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:281万
展开全部
你的观点是正确的!

不过不知道你的代码中 get, put 是不是笔误。

另外不建议使用 gets, 不安全,容易发生这种溢出 , 推荐 fgets 函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mlper_
推荐于2017-10-15 · TA获得超过8017个赞
知道大有可为答主
回答量:4863
采纳率:78%
帮助的人:1244万
展开全部
  1. gets函数的头文件:#include <stdio.h>

  2. gets()函数用于从缓冲区中读取字符串,其原型如下:
        char *gets(char *string);

  3. gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。

  4. 【返回值】若成功则返回string的指针,否则返回NULL。

  5. 注意:由于gets()不检查字符串string的大小,必须遇到换行符或文件结尾才会结束输入,因此容易造成缓存溢出的安全性问题,导致程序崩溃,可以使用fgets()代替。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hovidelphic
2008-09-23 · 贡献了超过116个回答
知道答主
回答量:116
采纳率:0%
帮助的人:0
展开全部
15就可以了。因为STR(15)有16个字符:STR(0)~STR(15)。手机打不出中括号,见谅。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天羽偌曦
2012-08-23
知道答主
回答量:39
采纳率:100%
帮助的人:18.9万
展开全部
亲,换行符是会被丢弃的。百度百科里面不是有么。所以这个语句应该还是15.书上没错,是你错了。http://baike.baidu.com/view/1457521.htm 看【4】
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leboc
2008-09-23 · 超过30用户采纳过TA的回答
知道答主
回答量:145
采纳率:100%
帮助的人:57.7万
展开全部
"I am a student"+'\0' =15个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式