In C++, you don't need to say struct other than when you're defining it. Nowhere in your code above do you need to say struct.
This being C++, use proper C++ strings.
struct Product *CreateProduct(string name, char *company, char *properties, int dateOnMarket[3], unsignedint inProduction) (and likewise for other char arrays, and don't use strdup)
what->dateOnMarket[3] = dateOnMarket[3];
This doesn't do what you think it does. This attempts to copy the 4th element in an array (which does not exist) over another 4th element in an array (which also does not exist), so a total disaster.
Anyway,
1 2 3 4
cout << "What is the name of the product? ";
string productName;
cin >> productName;
Product* data = CreateProduct(productName ,"", "", , );
I also see no value here in creating the object using new. Why are you doing that?