I have 2 structures named Phone and Patient, respectively:
struct Phone{
char description[4];
char number[10];
};
struct Patient{
int id;
char name[15];
struct Phone phone;
};
Now, on creating a patient’s array like:
struct Patient patient = [
{1024, "Shaggy Yanson", {"CELL","3048005191"} },
]
Upon printing the phone description value, I get the output as CELL3048005191.
NOTE: I cannot change the array
I want to know what is causing the problem. Is it the structure definition?
>Solution :
Yes it is. The problem is that C-style strings require one extra character to store a nul terminator. This is the character '\0' which is placed at the end of every C-style string. So, to store a string like "CELL" requires an array of size 5, not 4.
Of course, you can still store the 4 characters 'C', 'E', 'L' 'L' in an array of size 4. It’s just that, then it’s no longer a C-style string, because it no longer has a nul terminator. If this is what you want to do, then you will have to take special measures when you process the data (like, when you print it, for example).