У меня есть эта структура, которую я пытаюсь инициализировать, используя следующий код. Он получает ошибку времени выполнения при попытке инициализировать «finger_print»strcpy() создает ошибку
Что в этом плохого?
typedef struct fpinfo
{
unsigned long chunk_offset;
unsigned long chunk_length;
unsigned char fing_print[33];
}fpinfo;
функция:
struct fpinfo* InitHTable(struct fpinfo ht[][B_ENTRIES])
{
unsigned char garb[33]={0};
for (int j = 0; j < BUCKETS; ++j)
{
for (int k = 0; k < B_ENTRIES; ++k)
{
ht[j][k].chunk_offset=0;
ht[j][k].chunk_length=0;
strcpy((char*)ht[j][k].fing_print[32],(const char*)garb);
//ht[j][k].fing_print[32]=0;
}
}
curr_tanker=1;
return &ht[0][0];
}
Это то же самое с strncpy()
Еще лучше '#define РАЗМЕР 33' и' SIZE-1' – zmccord
@zmccord: Согласен. Хотя функция 'strcpy' - это вопрос, о котором идет речь. – LihO
@zmccord: Также '#define SIZE 32' и' SIZE + 1' в декларации гораздо более интуитивно понятны. – LihO