Вывод атрибута из файла с Rutoken

Пишу программу, необходимо считать атрибут с файла хранящегося на Rutoken S и записать его в строку.

пользуюсь исходным кодом представленным на
http://developer.rutoken.ru/pages/viewp … танатокене

но при компиляции возникает ошибка

CK_BYTE         new_data[] = “Sample Rutoken data”;
 
CK_ATTRIBUTE attrDataReadTmpl[] = {CKA_VALUE, NULL_PTR, NULL};
CK_ATTRIBUTE attrDataEditTmpl[] = {CKA_VALUE, new_data, sizeof(new_data)};
 
 
while(true)
{
    ...
  
    /* Изменить значение объекта */
    printf("Setting object value");
    rv = pFunctionList->C_SetAttributeValue(hSession,            // Хэндл открытой с правами Пользователя сессии
                                            hData,              // Хэндл объекта ключа
                                            &attrDataEditTmpl[0],  // Шаблон изменения значения атрибута
                                            1);                 // Количество атрибутов в шаблоне
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");
        break;
    }
    printf(" -> OK\n");
  
    /* Получить размер буфера для хранения значения атрибута CKA_VALUE*/
    printf("Getting object value size");
    rv = pFunctionList->C_GetAttributeValue(hSession,            // Хэндл открытой с правами Пользователя сессии
                                            hData,              // Хэндл объекта ключа
                                            &attrDataReadTmpl[0],  // Шаблон получения значения атрибута
                                            1);                 // Количество атрибутов в шаблоне
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");
        break;
    }
    printf(" -> OK\n");
 
    /* Выделить необходимое количество памяти для значения атрибута */
    attrDataReadTmpl->pValue = (CK_BYTE*)malloc(attrDataReadTmpl->ulValueLen);
    if (attrDataReadTmpl->pValue == NULL)
    {
        printf("Memory allocation for attrDataReadTmpl failed! \n");
        break;
    }
    memset(attrDataReadTmpl->pValue,
           0,
           (attrDataReadTmpl->ulValueLen * sizeof(CK_BYTE)));
  
    /* Получить значение объекта */
    printf("Getting object value");
    rv = pFunctionList->C_GetAttributeValue(hSession,            // Хэндл открытой с правами Пользователя сессии
                                            hData,              // Хэндл объекта ключа
                                            &attrDataReadTmpl,  // Шаблон получения значения атрибута
                                            1);                 // Количество атрибутов в шаблоне
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");
        break;
    }
    printf(" -> OK\n");
  
    /* Распечатать буфер со значением объекта */
    printf("Data is:\n");
    for (i = 0;
         i < attrDataReadTmpl->ulValueLen;
         i++)
        printf("%s", attrDataReadTmpl->pValue[i]);
    break;
}
  
if (attrDataReadTmpl->pValue)
{
    free(attrDataReadTmpl->pValue);
    attrDataReadTmpl->pValue = NULL_PTR;
    attrDataReadTmpl->ulValueLen= 0;
}
  

а именно в строчке

        printf("%s", attrDataReadTmpl->pValue[i]); 

код ошибки

[bcc32 Error] Unit1.cpp(273): E2453 Size of the type 'void' is unknown or zero
  Full parser context
    Unit1.cpp(44): parsing: void _fastcall TForm1::FormShow(TObject *)

перерыл весь интрнет ничего путного не нашел,
подскажите что делать, или дайте подобный семпл!

Re: Вывод атрибута из файла с Rutoken

http://www.cplusplus.com/reference/cstdio/printf/
используйте %c а не %s для вывода символа