scanf()/printf()返回的这类,都可算是错误码,因为它表征正确处理的结果,而getchar()的返回值夹杂了读入的数据和错误码(EOF),就是不良设计。看看fopen()函数吧,这是旧式经典函数,利用返回NULL指针表示文件打开失败,但并不知道为什么会失败(因为文件无法打开的原因有多种可能),仅用NULL是反映不来的,但如果用数值,又会与FILE*的值混淆。新版VC建议废弃fopen(),使用安全函数fopen_s(),这个函数的返回值不是FILE*,而是errno_t,即int,就是错误码,不同的数值代表不同的错误原因(其实main()返回给操作系统的整数值就是这样用的),所以使用新版VS的时候,经常看到一些应采用安全型函数的警告信息,指的就是这些,除了fopen_s(),还有scanf_s()/printf_s()函数,如我上面代码所示。
授人以渔,不授人以鱼。