char数组的右边填充在c中不起作用

时间:2014-03-07 10:54:16

标签: c printf

我有char数组;我正在将它写入缓冲区以便以单行显示它们。

    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'

缓冲区的预期结果;我想添加空格以获得每个数组后的固定长度

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输出

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   

2 个答案:

答案 0 :(得分:0)

它应该像,如何用这些字符串初始化数组?您无法使用单引号''使用双""来分配字符串。

int main ()
{
    char *array[150];
    char buffer[150];

    array[0] = "799234";
    array[1] = "28/02/2014 08:03";
    array[2] = "CCC";
    array[3] = "28/02/2014 18:03";
    array[4] = "799234";
    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
    printf("%s\n", buffer);

    array[0] = "799923-1";
    array[1] = "28/02/2014 08:03";
    array[2] = "CCC";
    array[3] = "28/02/2014 18:03";
    array[4] = "79921";
    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
    printf("%s\n", buffer);

    array[0] = "79921";
    array[1] = "28/02/2014 08:03";
    array[2] = "CCC";
    array[3] = "28/02/2014 18:03";
    array[4] = "799234";
    sprintf(buffer, "%-17s%-25s%-20s%-17s%s" ,  array[0],array[1], array[2],array[3],array[4]);
    printf("%s\n", buffer);

    return 0;
}

输出:

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]也是例如。你的类型是什么?

答案 1 :(得分:0)

什么是arrayarray[0]array的第一个元素。我会写:

char arr0[] = "799234";
char arr1[] = "28/02/2014 08:03";
char arr2[] = "CCC"; 
char arr3[] = "28/02/2014 18:03";
char arr4[] = "799234";