学生:为什么 char s[20]; scanf("%s", s); 不用 & 也可以?
小林:需要指针; 并不表示一定需要 & 操作符。当你向 scanf() 传入一个指针的时候, 你不需要使用 &, 因为不论是否带 & 操作符, 数组总是以指针形式传入函数的。
学生:为什么这些代码 double d; scanf("%f", &d); 不行?
小林:跟 printf() 不同, scanf() 用 %lf 代表双精度数, 用 %f 代表浮点数。
学生:怎样在 scanf() 格式串中指定可变的宽度?
小林:不能的,scanf() 格式串中的星号表示禁止赋值。你可以使用 ANSI 的字符串化和字符连接完成同样的事情, 或者你可以在运行时创建 scanf 格式串。
学生:当我用 “%dn” 调用 scanf 从键盘读取数字的时候, 好像要多输
入一行函数才返回。
小林:n 在 scanf 格式串中不表示等待换行符, 而是读取并放弃所有的空白字符。