我想用 C 打印"receipt"但想不通



我一直在想办法打印这个"接收";,但我不知道如果不单独打印所有内容,这是否可行。这是我要打印的内容:https://pastebin.com/qxk18ARh(检查原浆数据(:

****************************************************************************************************
*                                         PERSONAL DETAILS                                         *
*                                                                                                  *
*           Name:                                                   Tesla                          *
*           Surname:                                                Nikola                         *
*           Address:                                                Androutsou 150, Piraeus, 15232 *
*           Total days of consumption:                              179                            *
*           Sq. Meters:                                             110                            *
*                                                                                                  *
****************************************************************************************************                                    *                                               PRICING                                            *
*                                                                                                  *
*           Initial cost:                                           EUR 19.32                      *            
*           Details:                                                                               *    
*                   Municipal Taxes:                                EUR 7.05                       *                    
*                   Total Charges:                                  EUR 12.27                      *                
*           Final cost (after credit card payment deduction):       EUR 17.39                      *                                    
*                                                                                                  *
****************************************************************************************************                                    *                                          PAYMENT DETAILS                                         *                        
*                                                                                                  *
*           Credit Card Number:                                     1234 5678 9012 3456            *                                    
*                                                                                                  *                                    
****************************************************************************************************

奇怪的换行符、拖尾空白和过长的线条,就像在pastebin链接中发现的一样,但可能不是真正想要的。原始数据也包含许多选项卡

我搜索了一下,发现只有如何打印一个空心正方形,上面有这些循环:

for (int i = 1; i <= 23; i++) {
for (int j = 1; j <= 23; j++) {
if (i == 1 || i == 23 || j == 1 || j == 23){
printf("* ");
}else{
printf("  ");
}
}
printf("n");

但我首先要找一个矩形,我不知道如何用这种方式把两条线放在里面。所以我主要是在问,是否可以用一种更紧凑的方式,比如循环,如果可以,我应该怎么做。任何形式的帮助都会很棒。提前谢谢。

打印表单的一个好方法是使用变量宽度

一个独特的优点是它允许以统一的方式进行更新。

打印:

*        Initial cost:            EUR 19.32  *
*        Details:                            *
*            Municipal Taxes:     EUR 7.05   *

用途:

int width1a = 8;
int width1b = width1a + 4;
int width2a = 25;
int width2b = 25 - 4;
int width3 = 9;
// Notice the common format
printf("*%*s%-*s%-*s  *n", width1a, "", width2a, "Initial cost:",    width3, "EUR 19.32");
printf("*%*s%-*s%-*s  *n", width1a, "", width2a, "Details:",         width3, "");
printf("*%*s%-*s%-*s  *n", width1b, "", width2b, "Municipal Taxes:", width3, "EUR 7.05");

更先进的东西,如居中一个标题可以用计算的宽度来完成。

最新更新