我在C程序中遇到过这个:
char str[100];
scanf(" %[^\n]", str);
Run Code Online (Sandbox Code Playgroud)
请解释它是如何工作的以及为什么?
小智 7
此scanf格式字符串由两部分组成:
' ','\t','\n'在输入,等等),和%[^\n]转换规范,它不等于所有字符的字符串匹配新行字符('\n'它(加上终止),并存储'\0'字符)的str.但请注意,如果输入(在前导空格之后,在第一个换行符之前)超过99个字符,则此函数表现出未定义的行为,因为str只能保持100 char秒,包括终止'\0'字符.更安全的替代方案是:
scanf(" %99[^\n]", str);
Run Code Online (Sandbox Code Playgroud)