Enable Microsoft extensions...
What we are telling you is that for a string intializer to work correctly you need space for the trailing 0... you do not get to simply ignore it. The compiler will want to put it there when crunching your code. The result will be a buffer overrun leaving you with unknown contents in at least one section of your struct. Moreover you are removing the trailing 0 safeguard that all strings carry.
If you absolutely insist upon putting single characters --and treating the array as such-- then your use of four separate characters ... '1', '2', '3', '4', "Test" ... from an earlier message is the correct intializer. Although you might be in for a bit of a surprise when you find out it's actually loaded with numerical values 49, 50, 51 and 52, which are the ascii equivalents of the characters you specified.
If you want numerical values in your char array you would use 1, 2, 3, 4, "Test"
If you change c in your struct to an int, the correct intializer is 1234, "Test"
As Ralf points out you are very unwise to ignore the warning... because the result would be that your char c[4] variable would be loaded with '1' followed by whatever garbage was floating around in memory at the time. Your intializer will have failed and almost certainly your program would misbehave in ways that could be next to impossible to troubleshoot.
It's called "undefined behaviour" and C programmers avoid it like the plague.