Also, in this case, I'd use a lookup table and not a switch statement, it's a lot more compact and less prone to error (like forgetting a break or something). It also is more maintainable, in that if you wanted to change what followed the abbreviation - for example to add two newlines instead of one, or to add the day of the month, or something - you can do it in one place and not seven.
Lookup tables can be better performing than switch statements, although I don't consider that a compelling reason to use them in most cases; I prefer this method because of readability and maintainability.
Since the values are integers, with each integer having a representation (i.e. it's not a sparse mapping) a simple array can work ideally.
Also, for myself, I'd probably settle for the abbreviations that strftime() gives, rather than rolling my own, but if I really had to have my own day-of-week abbreviations, I'd use one of the following, either of which can accept sunday being either 0 or 7:
Code:
char * day_abbrev[] = {"su", "mo", "tu", "we", "th", "fr", "sa", "su"};
printf("%s \n",day_abbrev[wkday]);
Code:
char * day_abbrev[] = {"su", "mo", "tu", "we", "th", "fr", "sa"};
printf("%s \n",day_abbrev[wkday%7]);