[英]How does scanf(“ %[^\n]”, str); work in C Programming?
我在 C 程序中遇到过这个:
char str[100];
scanf(" %[^\n]", str);
请解释它是如何工作的以及为什么?
这个scanf
格式字符串由两部分组成:
' '
、 '\\t'
、 '\\n'
等),以及%[^\\n]
转换规范,它匹配不等于换行符( '\\n'
) 的所有字符组成的字符串,并将其(加上终止字符'\\0'
字符)存储在str
。 但是请注意,如果输入(前导空格之后,第一个换行符之前)超过 99 个字符,则此函数表现出未定义的行为,因为str
只能容纳 100 个char
包括终止的'\\0'
字符。 一个更安全的选择是:
scanf(" %99[^\n]", str);
[^\\n]
搜索换行符
因此它将扫描字符串直到按下输入
您如何为str分配空间? 密歇根人
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.