Ok, this ive worked on before also.
You pretty much have two choices you can take which ever you like better.
1) If you dont mind spaces do it like this.
ch_printf( ch, "You %s &W'&w %s &D&W'&D\n\r", verb, argument );
sprintf( buf, "$n %ss &W'&w $t &D&W'&D", verb );
Notice I put in spaces as well as after the argument put it to set it back to normal color
Not doing this can allow color bleeding even with the &W there.
2) If you dont want spaces and all then you need to do it something like this
ch_printf( ch, "You %s &W'&w%s%s&W'&D\n\r", verb, argument, ANSI_RESET );
sprintf( buf, "$n %ss &W'&w$t%s&W'&D", verb, ANSI_RESET );
It more or less does the same thing only it will go ahead and put the actual code in there
which will reset it and using some color code on the end shouldn't affect it.
Personaly I think I orginaly went with the top way but I think either should work fine.