printf and scanf work in c++ but are technically C code. C++ was originally an extension to C (its branched farther apart over the decades) and even today 80% or more of C is directly available in C++. You should avoid the C tools unless you have a really good reason to use them, though.
cin and cout are the c++ read and write to keyboard/screen methods.
visual studio has a moronic complaint about the C tools because some 'genius' at M$ re-wrote them and then added a hack to the compiler to make it complain when you use the originals instead of his 'improved' version. Is that the complaint you get? There is a pragma command you can look up to make it stop being an idiot about it, but its better to just use the c++ versions as I said above.
C++ has an 'array like container' called a vector.
you can put all the cards into a vector, shuffle it (there is a shuffle method for it!) and then just iterate it sequentially to play cards. You don't have to fight with all the duplication stuff by hand. If you want to do it just to be doing it this way, to learn the algorithms and such, you can though.... let us know what you want to see here. One easy way to fix it is to add a 'played' boolean to card struct and initialize to false, set it to true once its been consumed.
<random> is c++ random numbers. even C coders avoid rand() ... rand is old, its extremely poor quality, and its best to forget it exists.
PDB is a program database, for debugging purposes. I don't know what you did to trigger this, but its a project level problem, not a code level problem.
.h was removed due to a language upgrade for the standard includes. The C ones and a few "what were they thinking" ones are preceeded with a C instead,
<ctime>
<cstring> (string.h, and VERY different from c++ strings in <string>)
<cstdio>
--------------
<cmath> (oddball, math is not a C tool)
All that to say, try
https://www.learncpp.com/ to learn modern c++. Whatever you are using is teaching you with too much C in it.
Let us know how you want to handle this (I would recommend a do-over with C++ tools) code and if you want to dig in and fix it just cause, we can do that....
----------
your code is pretty advanced for a raw beginner. if you know another language that has OOP features, in C++ a struct and a class are both objects and you can tack the methods to the objects instead of passing the struct to free floating functions. Here again, you are following a C style -- C does not have OOP features directly (you can put some of them in with smoke and mirrors but its not well supported).
x = new type; //get ONE item.
x = new type[count];//get an ARRAY like block of items.
you are not allocating your deck etc as you needed to do.
card* pDeck = new card[52];//jokers, etc? or just 52?
and delete syntax changes slightly for this too:
delete[] pDeck;
using pointers and dynamic memory are avoided in c++ as much as possible via containers that do it for you:
vector<card> Deck(52); //vector will hide and handle the pointers for you.
you can also just put them on the stack and avoid the memory allocation:
card Deck[52];//much simpler. this is a C style array, which is used regularly enough in C++ for simple tasks.