繁体   English   中英

scanf(“ %[^\\n]”, str); 在 C 编程工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM