Как получить правильное выравнивание при печати в файл - PullRequest
0 голосов
/ 27 марта 2012

У меня есть эта структура, элементы которой мне нужно записать в текстовом файле

struct Stage3ADisplay
{
    int nSlot;
    char *Item;
    char *Type;
    int nIndex;
    unsigned char attributesMD[17]; //the last character is \0
    unsigned char contentsMD[17]; //only for regular files - //the last character is \0
};  

buffer = malloc(sizeof(Stage3ADisplayVar[nIterator]->nSlot) + sizeof(Stage3ADisplayVar[nIterator]->Item) + sizeof(Stage3ADisplayVar[nIterator]->Type) + sizeof(Stage3ADisplayVar[nIterator]->nIndex) + sizeof(Stage3ADisplayVar[nIterator]->attributesMD) + sizeof(Stage3ADisplayVar[nIterator]->contentsMD) + 1);

sprintf (buffer,"%d %s %s %d %x %x",Stage3ADisplayVar[nIterator]->nSlot, Stage3ADisplayVar[nIterator]->Item,Stage3ADisplayVar[nIterator]->Type,Stage3ADisplayVar[nIterator]->nIndex,Stage3ADisplayVar[nIterator]->attributesMD,Stage3ADisplayVar[nIterator]->contentsMD);

Как убедиться, что строки в файле правильно выровнены.Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Спасибо. Я нашел ответ, который искал. Так как я знал ожидаемое максимальное значение, которое строка может получить из тестовых данных, хотя я использовал указатель на символ, я выровнял поля по указанному пределу влево.

buffer = malloc(sizeof(Stage3ADisplayVar[nIterator]->nSlot) + sizeof(Stage3ADisplayVar[nIterator]->Item) + sizeof(Stage3ADisplayVar[nIterator]->Type) + sizeof(Stage3ADisplayVar[nIterator]->nIndex) + sizeof(Stage3ADisplayVar[nIterator]->attributesMD) + sizeof(Stage3ADisplayVar[nIterator]->contentsMD) + 1 + 53);

sprintf (buffer,"%-3d %-10s %-10s %-10d %-10x %-10x",Stage3ADisplayVar[nIterator]->nSlot, Stage3ADisplayVar[nIterator]->Item,Stage3ADisplayVar[nIterator]->Type,Stage3ADisplayVar[nIterator]->nIndex,Stage3ADisplayVar[nIterator]->attributesMD,Stage3ADisplayVar[nIterator]->contentsMD);
0 голосов
/ 27 марта 2012

Если ваш вопрос относится к sprintf,

Изменить

 sprintf (buffer,"%d %s %s %d %x %x"

до

 sprintf (buffer,"%22.22d %22.22s %22.22s %22.22d %22.22x %22.22x"

чтобы увидеть, как работает% nn.nn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...