请不要说是fscanf() ;P
我试图替换掉这一行:
if ( fscanf(fp, "P%c\n", &ch) != 1 )
如果我理解正确,它尝试读取一个字符并将其存储到&ch中,只有当它在'P'和'\n'之间时才这样做。是这样吗?如果成功,它会返回1(它读取的字符数)?
我正在尝试编写C++版本。有没有简单的方法可以进行格式化读取?还是我需要使用fstream、operator>>和嵌套if语句?
一种具有类型检查的安全 C++ 选择是 std::stringstream。
在Visual Studio中,安全但不可移植的等效函数是fscanf_s。
一般来说,为了可移植性,您应该使用其中一个流类,正如您所指出的,这可能很难正确格式化。
null
终止符的存在。它更喜欢您使用(非标准的)fscanf_s
。要消除警告,您可以在调用fscanf
之前的行上放置#pragma warning(suppress:4996)
。非MSVC编译器不理解这个语句,但应该会忽略它,g++也会。 - Gunslinger47