error: invalid conversion from 'int' to 'const char*'
This error message means you have one thing that's an "int" and another that wants a "const char*" and you're trying to put the round "int" peg into to the square "const char*" hole. As arrch said, day() returns an int, and strcat() wants a const char*
An int is a number. A char* is a pointer to a character (or in this case, a pointer to the beginning of a bunch of characters right next to each other, sometimes called an array or a string). A pointer is just a number that means a location in memory, just like a house address. It's easier to tell someone your house address and have them look you up on street view than to give them every dimension in your house, which is why we tell people our house addresses. When you want to pass a lot of data from place to place in a program, you can similarly use a pointer to pass the data quickly. Of course, if you give someone a house, they can do whatever they want with it, but if you tell them the address you're expecting that they not burn it down. This is what the "const" means -- it's a promise that whoever is accepting the pointer won't change the thing it's pointing at (keep in mind that in C, this promise can be broken. But if it's broken for a certain function, you should stop using the program)