字符数组的右填充在c中不起作用

字符数组的右填充在c中不起作用,c,printf,C,Printf,我有数据的字符数组;我将它写入一个缓冲区,以便在单行中显示它们 char buffer[150] ; sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]); //code uses buffer to add values to interface 我只是想将它们全部对齐。稍后我会使用这些值在界面中显示 char buffer[1

我有数据的字符数组;我将它写入一个缓冲区,以便在单行中显示它们

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
我只是想将它们全部对齐。稍后我会使用这些值在界面中显示

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
我做错了什么

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
注意:数组的示例值

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
array[0] = '799234' or '799923'-1'
array[1] = '28/02/2014 08:03'
array[2] = 'CCC' or 'CC'
array[3] = '28/02/2014 18:03'
array[4] = '799234' or '79921'
缓冲的预期结果;我想在每个数组后添加空格以获得固定长度

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
799234    28/02/2014 08:03    CCC     28/02/2014 18:03   799234   
799923-1  28/02/2014 08:03    CC      28/02/2014 18:03   79921 
79921     28/02/2014 08:03    CCC     28/02/2014 18:03   799234   
Actaul输出

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
799234    28/02/2014 08:03    CCC     28/02/2014 18:03   799234   
799923-1    28/02/2014 08:03   CCC      28/02/2014 18:03   79921 
79921    28/02/2014 08:03   CCC     28/02/2014 18:03   799234   

它的工作原理应该是,如何用这些字符串初始化数组?不能使用单引号
''
或双引号
''
分配字符串

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
输出:

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
799234           28/02/2014 08:03         CCC                 28/02/2014 18:03 799234
799923-1         28/02/2014 08:03         CCC                 28/02/2014 18:03 79921
79921            28/02/2014 08:03         CCC                 28/02/2014 18:03 799234

这里也有
char*array[150]
的例子。您的类型是什么?

什么是
array
<代码>数组[0]是
数组的第一个元素。我会写:

    char buffer[150] ;

    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
     //code uses buffer to add values to interface 
char arr0[] = "799234";
char arr1[] = "28/02/2014 08:03";
char arr2[] = "CCC"; 
char arr3[] = "28/02/2014 18:03";
char arr4[] = "799234";

如果打印缓冲区,预期输出和实际输出是什么?请编辑您的问题以包含这两个问题。数组decl是什么样子的?正如您所写的,它应该是char*array[5];“但是”用于单个字符。@Claptrap是;我已经声明了char*array[100][5]。这里我简化了代码。(i=0;ichar*数组[100][5]的actaul one
for(i=0;i
char*数组[100][5])是一级间接寻址太多了,失去了*i已声明char*数组[100][5]。这里我简化了代码。actaul one
for(i=0;i
char*数组[100][5]
如何为其赋值?这意味着它不会编译,因为如果尝试赋值类型为'char 5]'from type'char*'我在赋值方面没有问题;代码符合要求并生成如上所述的结果。我想要的是,如果数组[0]=“799234”,我想添加11个空格。数组[0]=“799234-1”,我想添加9个空格。也就是说,我尝试了“%-17s”以获得17个字符的固定长度。但它没有按预期工作。