2015-07-13 104 views
1

我在某处读到scanf()我可以输入最多15个char s。这样对吗?它是否有界?scanf对用户可以输入的字节数有限制吗?

+1

'read somewhere' ...请指向我们也... –

+0

如果它是有界的,它不是15个字符 - 为什么不测试它出.. – amdixon

+1

抱歉的语言,但正如我们所说,[RTFM](http://linux.die.net/man/3/scanf)第一。 –

回答

2

scanf()有限的用户可以输入的字节数?

NO

但是,FWIW,我们可以对实际要扫描的输入的长度施加限制。为了那个原因。我们使用最大字段宽度和转换说明符。一个简单的例子将是

char arr[15] = {0}; 
scanf("%14s", arr); 

上述格式的保证,无论是用户输入的长度,(即,输入缓冲器的当前数据),scanf()将只读取14char S,因此,即使如果用户输入较长的,则可以防止缓冲区溢出。

尽管如此,它并没有对用户输入施加任何限制。当被问及时,用户仍然可以输入char的任意数字(至少,理论上)。

1

没有

,直到你按下一个换行符即进入可以输入尽可能多的字符。并且,是的,你可以通过在这里使用"%ns"来限制n是限制的字符数