我经常看到人们劝阻别人不要使用 scanf
,并说有更好的选择。然而,我最终看到的不是 “不要使用 scanf
”就是 “这里有一个正确的格式字符串”,从来没有提到过任何 “更好的选择”的例子。
例如,让我们看看这段代码:
scanf("%c", &c);
这会读取上次转换后留在输入流中的空白。通常建议的解决办法是:
scanf(" %c", &c);
或不使用 scanf
。
既然 scanf
不好,那么有哪些 ANSI C 选项可以在不使用 scanf
的情况下转换 scanf
通常可以处理的输入格式(例如整数、浮点数和字符串) ?