有人可以解释一下 C 语句的含义和工作原理吗
scanf( "%*[\n]%[^\n]",arr);
?
最佳答案
在 C 语言中,scanf
经常用于填充 char
数组。也就是说,arr
是一个数组,声明如下:
char arr[99];
当作为函数的参数提供时,it's converted to a pointer to first element 。也就是说,scanf
接收一个指向数组第一个元素的指针,就像它期望使用 %[
格式说明符一样。
顺便说一句,这是一个可能的缓冲区溢出的示例。此示例读取一行文本。如果该行很长(在我的示例中大于 98 字节),scanf
将导致缓冲区溢出。您的示例实际上执行了与 gets
非常相似的操作,它已被弃用,因为它可能导致溢出(并且无法避免)。对您的格式使用绑定(bind),如所述here .
关于c - 为什么这个语句在scanf语句中不需要 '&'符号 'scanf( "%*[\n]%[^\n ]",arr);',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38643182/