首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >差,(‘’%s‘),getline

差,(‘’%s‘),getline
EN

Stack Overflow用户
提问于 2016-04-08 06:19:33
回答 1查看 5.9K关注 0票数 0

我在quora上读到了的问题,并且读到谷歌在一次采访中提出了这个问题,

函数之间有什么不同: scanf("%s")、gets和getline

谁能提供一个详尽的清单和他们的解释。

EN

回答 1

Stack Overflow用户

发布于 2016-04-08 06:29:12

scanf("%s", &buffer);读取输入中的下一个令牌(任何空格/行尾/制表将结束令牌),并将其存储在char *buffer中。您应该使用最大大小的格式来缓冲,例如,对于char buffer[10],您应该使用scanf("%9s", buffer);最多读取9个字符。

gets()已经过时了,不要使用它。它读取了整行,不管它的大小,所以如果一个具有管理特权的程序使用这样一个糟糕的功能,它可以被黑客用来穿透系统。这曾经是一种常见的黑客策略。请使用fgets(),它使用一个与缓冲区大小相同的参数。在前面的示例中使用fgets(buffer, 10, stdin);。请注意,如果行不超过8个字符,\n将包括在缓冲区中。

getline()更具体,因为我知道它只是一个c++函数。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36492852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档