<p>I need a function to return a suffix for days when displaying text like the "<code>th</code>" in "<code>Wednesday June 5th, 2008</code>".</p>

<p>It only need work for the numbers 1 through 31 (no error checking required) and English.</p>

The following function works for C:
```
```
char *makeDaySuffix (unsigned int day) {
    //if ((day < 1) || (day > 31)) return "";
    switch (day) {
        case 1: case 21: case 31: return "st";
        case 2: case 22:          return "nd";
        case 3: case 23:          return "rd";
    }
    return "th";
}
```
```
As requested, it only works for the numbers 1 through 31 inclusive. If you want (possibly, but not necessarily) raw speed, you could try:
```
```
char *makeDaySuffix (unsigned int day) {
    static const char * const suffix[] = {
        "st","nd","rd","th","th","th","th","th","th","th",
        "th","th","th","th","th","th","th","th","th","th"
        "st","nd","rd","th","th","th","th","th","th","th"
        "st"
    };
    //if ((day < 1) || (day > 31)) return "";
    return suffix[day-1];
}
```
```
You'll note that I have bounds checking in there though commented out. If there's even the
slightest
possibility that an unexpected value will be passed in, you'll probably want to uncomment those lines.
Just keep in mind that, with the compilers of today, naive assumptions about what is faster in a high-level language may not be correct:
measure, don't guess.