我有一个将一些数据写入文本文件的 C 函数。数据由浮点数、整数和字符串组成。它看起来像这样:
writeAsTextFile( mystruct_t* myStructWithIntsFloatsAndStrings , const char* fileName);
为此,我使用对 fprintf 的调用;
现在我想写相同的数据,但作为二进制。我可以编写第二个函数 writeAsBinaryFile 并使用对 fwrite 的调用。但是每次我要更改 mystruct_t 的设计时,我都必须同时修改 writeAsTextFile 和 writeAsBinaryFile。当然还有对应的readAsTextFile和readAsBinaryFile。最重要的是,这将增加代码大小。因此,我想要一个带有一个 bin-or-text 参数的通用函数,如下所示:
writeToFile( mystruct_t* myStructWithIntsFloatsAndStrings , const char* fileName, myEnumType_t eOption)
例如,其中选项是枚举 eBin = 0 和 eTxt =1。根据 eOption,该函数将写入二进制或文本数据。
我不确定实现这一目标的最佳方法是什么。我是否也应该使用 fwrite 来写入文本,我应该尝试使用宏吗?(我在某处看到过使用 ## 指令但从未使用过它),或者我需要写入文件的任何地方的 switch/ifs 语句?或者我应该写一个通用函数,比如
myWriteFunction( void *data, char const type, myEnumType_t eOption)
writeToFile 会调用它吗?
我对使用 fread/fwrite 和宏不是很熟悉,所以欢迎任何最佳实践评论、想法等,
谢谢
爸爸