相关疑难解决方法(0)

如何防止scanf导致C中的缓冲区溢出?

我用这个代码:

while ( scanf("%s", buf) == 1 ){
Run Code Online (Sandbox Code Playgroud)

什么是防止可能的缓冲区溢出的最佳方法,以便它可以传递随机长度的字符串?

我知道我可以通过调用例如限制输入字符串:

while ( scanf("%20s", buf) == 1 ){
Run Code Online (Sandbox Code Playgroud)

但我更愿意能够处理用户输入的任何内容.或者这不能使用scanf安全地完成,我应该使用fgets?

c scanf overflow

75
推荐指数
4
解决办法
9万
查看次数

使用scanf - > ANSI C的最大字符串长度

我有:

#define MAX_STR_LEN 100
Run Code Online (Sandbox Code Playgroud)

我想进入scanf模式,所以我可以控制字符串长度:

scanf("%100[^\n]s",sometext)
Run Code Online (Sandbox Code Playgroud)

我试过了:

scanf("%MAX_STR_LEN[^\n]s",sometext)
scanf("%"MAX_STR_LEN"[^\n]s",sometext)
scanf("%",MAX_STR_LEN,"[^\n]s",sometext)
Run Code Online (Sandbox Code Playgroud)

它没有用.我只是想避免缓冲区溢出,因为"sometext"分配了malloc(MAX_STR_LEN)...

有任何想法吗?

c scanf visual-studio-2010

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×2

scanf ×2

overflow ×1

visual-studio-2010 ×1