我用这个代码:
while ( scanf("%s", buf) == 1 ){
Run Code Online (Sandbox Code Playgroud)
什么是防止可能的缓冲区溢出的最佳方法,以便它可以传递随机长度的字符串?
我知道我可以通过调用例如限制输入字符串:
while ( scanf("%20s", buf) == 1 ){
Run Code Online (Sandbox Code Playgroud)
但我更愿意能够处理用户输入的任何内容.或者这不能使用scanf安全地完成,我应该使用fgets?
我有:
#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)...
有任何想法吗?