scanf("%[^ \n]",str)怎么样; 在C编程工作?

Joy*_*pta 2 c string

我在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)