从标准输入以任意长度的输入,因此,采取用户键盘输入的CI的方式之一知道如下:使用scanf函数
char buffer[LENGTH_KNOWN] = "";
scanf("%s",buffer);
我想知道是否有任何方式把任意长度的用户输入。我尝试了如下的东西,但最终我得到了段错误。
char* buffer = "";
scanf("%s",buffer);
printf("%s",buffer);
然而,这似乎工作:
char* buffer = "TEST........keeps going....................."
scanf("%s",buffer);
printf("%s",buffer);
任何人都可以解释为什么我收到此错误,是否有任何简单的方法来SCANF任意用户输入不使用malloc和检查缓冲区溢出?
在此先感谢!
什么是要标记任意长度输入的结束?任意长度如何随意? 1 KiB; 4 KiB; 4 MiB; 4 GiB; 4 TiB;大?如果LENGTH_KNOWN是4096(或更大),你可以用'%4095s'来保护自己免受伤害。您可能希望使用'%4095 [^ \ n] \ n'在该缓冲区中最多读取4095个非换行符,然后再使用换行符。 –