Правый отступ для массива char не работает в c

У меня есть массив данных 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   

Актуальный выход

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 ответа

Это должно работать как, Как вы инициализируете массив с этими строками? Вы не можете назначить строку, используя одинарные кавычки '' использовать двойной "",

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] это например. какой у тебя тип?

Что такое array? array[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";
Другие вопросы по тегам