******%
*****%
****%
scanf("%s", *books[i].name);
Вы вместо указателя на имя передаёте значение первого символа, правильно:scanf("%s", books[i].name);
scanf("%d", books[i].price);
scanf("%d", books[i].page_n);
scanf("%d", books[i].pubhouse.year);
Вы вместо адреса переменной передаёте её значение, правильно:scanf("%d", &(books[i].price));
scanf("%d", &(books[i].page_n));
scanf("%d", &(books[i].pubhouse.year));
std::vector<SomeValueType> pingAddr;
, то можно писать for(auto iter=pingAddr.begin();iter!=pingAddr.end();iter++)
{
SomeValueType& v = *iter;
avrPing += v.getResult().avrRTT; //автодополнение будет работать,
//а код все равно проще, чем если писать название типа вместо auto
i++;
}
fd = fopen( filename, "wb" );
write( fd, i_regions, sizeof( i_regions ) );
fclose( fd );