我有一个C函数,它将一些数据写入文本文件。数据由浮点数,整数和字符串组成。 它看起来是这样的:将文本或二进制数据写入单个C函数
writeAsTextFile( mystruct_t* myStructWithIntsFloatsAndStrings , const char* fileName);
这样做我用调用fprintf中;
现在我想写的相同的数据,但二进制。我可以编写第二个函数writeAsBinaryFile,并使用调用fwrite来代替。但是,每次我将改变mystruct_t的设计,我将不得不修改writeAsTextFile和writeAsBinaryFile。当然还有相应的readAsTextFile和readAsBinaryFile。最重要的是这将增加代码量。 因此,我想有一个箱子,或文本参数一个单一的通用函数,应该是这样的:
writeToFile(mystruct_t* myStructWithIntsFloatsAndStrings , const char* fileName, myEnumType_t eOption)
其中选择将是一个枚举EBIN = 0和eTxt = 1的实例。根据eOption,该函数将写入二进制或文本数据。
我不知道什么是最好的方式来实现这一点。我是否也应该使用fwrite写作文本,我应该尝试使用宏吗? (我已经看到使用##指令的地方,但从来没有使用它),或切换/ ifs声明无论我需要写入文件?或者我应该写一个通用函数,如 myWriteFunction(void *data, char const type, myEnumType_t eOption)
这将被writeToFile调用吗?
我不是很熟悉使用FREAD/FWRITE和宏,以便任何的最佳做法的意见,想法等是值得欢迎的,
感谢
巴巴
当您处于设计数据文件的模式时,您是否考虑过像JSON或XML这样更通用的东西?然后所有写入都是文本写入。您几乎可以在任何其他编程环境中阅读您的文件,并且不会比现在正在做的更多工作。站在走在你面前的巨人的肩膀上。 – dawg 2010-10-02 02:53:03