写文件时字段对齐和填充的C代码实现

一、概述 在实际的软件开发项目中,经常会遇到需要转换某些文件中的字段格式的问题。例如,在生成的话单文件中,要求某些字段的长度固定,如果目前该字段的长度不足,则不足的位数用某些特殊的字符来填充(并可能会对填充的位置有要求)。之所以要求字段格式固定,是为了方便对文件的自动处理,因为很多软件是按照一定的规则对文件进行处理的。本文示例了对字段进行填充的方法。 本文要求生成文件中的字段长度固定为10,如果写入的内容长度小于10,不足部分可以用空格或0来填充。此外,要求程序可以控制在写入内容的左边或右边填充及填充的是0还是空格。

二、C代码实现

/版权所有 (C)2015, Zhou Zhaoxiong。** 文件名称:TestAlign.c* 文件标识:无* 内容摘要:示例对文件内容对齐和填充的处理* 其它说明:无* 当前版本:V1.0* 作 者:Zhou Zhaoxiong* 完成日期:20150901*/// 重定义数据类型typedef signed int INT32;typedef signed char INT8;// 函数声明void WriteFile(INT32 iAlignFlag, INT8 *pszTestStr);INT32 main();/功能描述:主函数* 输入参数:无* 输出参数:无* 返 回 值:无* 其它说明:无* 修改日期版本号修改人修改内容* ——————————————————————-* 20150901V1.0Zhou Zhaoxiong创建*/INT32 main(){}/功能描述:根据对齐方式写文件* 输入参数:iAlignFlag-对齐方式pszTestStr-测试字符串* 输出参数:无* 返 回 值:无* 其它说明:设基准长度为10个字节, 未达到则补空格或0* 修改日期版本号修改人修改内容* ——————————————————————-* 20150901V1.0Zhou Zhaoxiong创建*/void WriteFile(INT32 iAlignFlag, INT8 *pszTestStr){}

三、程序说明 1.本程序用iAlignFlag来表示填充方式,具体如下: (1) 如果iAlignFlag为1,则表示在写入内容的右边填充空格(即内容左对齐, 不足的位补空格)。 (2) 如果iAlignFlag为2,则表示在写入内容的左边填充空格(即内容右对齐, 不足的位补空格)。 (3) 如果iAlignFlag为3,则表示在写入内容的右边填充0(即内容左对齐, 不足的位补0)。 (4) 如果iAlignFlag为4,则表示在写入内容的左边填充0(即内容右对齐, 不足的位补0)。 2.大家要特别注意本程序中在左边或右边填充0或空格的方法,具体如下: (1) 左对齐,右补空格: _snprintf(szContent, sizeof(szContent)-1, “%10s“, pszTestStr); (2) 右对齐,,左补空格: _snprintf(szContent, sizeof(szContent)-1, “%-10s“, pszTestStr); (3) 左对齐,右补0: _snprintf(szContent, sizeof(szContent)-1, “%-s%0*d“, pszTestStr, 10-strlen(pszTestStr), 0); (4) 右对齐,左补0: _snprintf(szContent, sizeof(szContent)-1, “%0*d%s“, 10-strlen(pszTestStr), 0, pszTestStr);

四、程序输出 程序输出的截图如下:

同时,查看“D:\Test”下的“TestFile.txt”文件内容,可以看到写入内容是正确的。

五、总结 本程序代码虽然不多,也不复杂,但大家要特别注意对于对齐和字符填充的处理方法。如果让大家从头开始编写程序,也不是那么容易找到正确的处理方法的。这也说明了很多问题看似简单,但要完美地解决它,还需要我们具备扎实的功底,也还需要我们多多实践。

欢迎大家关注并支持本人新书《C程序员从校园到职场》。

一个人行走,若是寂寞了,寻一座霓虹灯迷离闪烁,

写文件时字段对齐和填充的C代码实现

相关文章:

你感兴趣的文章:

标签云: