The best option is not to create a structure for each Pokemon, but to create a structure which contains all the data that each Pokemon has in common. For example:
1 2 3 4 5 6 7 8
Since each Pokemon has the above traits in common, we can easily avoid making the same data structure multiple times (if I remember rightly, there's ~260 Pokemon?). So when we want to create a new Pokemon, we just instantiate the data structure (creating a new Pokemon):
Pokemon Pikachu; // "Pikachu" is a "Pokemon"
Then, to access "Pikachu"'s data, we use the member-access operator (.):
Pikachu.HP = ....;
[Note: I used to play a lot of Pokemon when I was a toddler]