Difficult to say. scanf is a very confusing function, if you don't know *exactly* what's going on (which is common for a learner) and it goes wrong, it can be very difficult to determine why.

I suggest you drop scanf and use fgets to read a line of input from the user, then parse that line to get the data you want. So if the data is in the form "description,value 1,value 2" then you can split it at the commas and copy the bits between the commas to various variables.

So for example if you replace commas with \0 bytes and store the address plus one of those bytes into, say, ptrarray[], then you can do:
strcpy(appo[0].desc, ptrarray[0]); // which would be the same as the start address of the string