C语言格式输出问题:文件的写入对齐问题

struct Deal
{
	char card[9];  //卡号 
	char dealtime[13];  // 交易时间yyyymmddhhmm
	float dealamount; //交易金额 
	char dealtype[5];  // 交易类型——   "c" --消费    "r" -- 充值 
};

struct Deal deal;

fprintf(fp1,"%-8s,%-12s,%7.2f,%-4s\n",deal.card,deal.dealtime,deal.dealamount,deal.dealtype);

给出了部分代码,我想每一行都对齐地写入(主要是后面dealmount和dealtype的写入),

我写入的结果是这样的

但我想要的结果是这样的

金额和消费类型都是整齐的写入,我的就对不齐,怎么弄呀,小白求教。

可以写个函数,将浮点型的效费金额转成固定长度的字符,参考如下代码:如有帮助,请采纳一下,谢谢。

//将浮点型转换成固定长度的字符串
	float a = 22.33333;
	char buf[20] = {0};
	sprintf(buf,"%.2f",a);

	std::string ss = buf;
	while(ss.length() < 8) //固定长度设为8,不足位前面用空格填充
		ss = " "+ ss;

	printf("%s\n",ss.c_str());