240 | | bool newWord = isalpha(string[0]) || isspace(string[0]); |
241 | | while (string[0]) { |
242 | | if (isalpha(string[0])) { |
243 | | if (newWord) { |
244 | | string[0] = toupper(string[0]); |
245 | | newWord = false; |
246 | | } else |
247 | | string[0] = tolower(string[0]); |
248 | | } else if (string[0] != '\'') |
249 | | newWord = true; |
| 240 | int i; |
| 241 | char* begin = string; |
| 242 | char* running = strtok(string, " "); |
| 243 | |
| 244 | while (running != NULL) { |
| 245 | if (strcasecmp(running, "a") == 0 // articles |
| 246 | || strcasecmp(running, "an") == 0 |
| 247 | || strcasecmp(running, "the") == 0 |
| 248 | || strcasecmp(running, "also") == 0 // conjunctions < 5 letters |
| 249 | || strcasecmp(running, "and") == 0 |
| 250 | || strcasecmp(running, "both") == 0 |
| 251 | || strcasecmp(running, "but") == 0 |
| 252 | || strcasecmp(running, "even") == 0 |
| 253 | || strcasecmp(running, "if") == 0 |
| 254 | || strcasecmp(running, "nor") == 0 |
| 255 | || strcasecmp(running, "only") == 0 |
| 256 | || strcasecmp(running, "or") == 0 |
| 257 | || strcasecmp(running, "so") == 0 |
| 258 | || strcasecmp(running, "yet") == 0 |
| 259 | || strcasecmp(running, "amid") == 0 // prepositions < 5 letters |
| 260 | || strcasecmp(running, "as") == 0 |
| 261 | || strcasecmp(running, "at") == 0 |
| 262 | || strcasecmp(running, "atop") == 0 |
| 263 | || strcasecmp(running, "by") == 0 |
| 264 | || strcasecmp(running, "down") == 0 |
| 265 | || strcasecmp(running, "for") == 0 |
| 266 | || strcasecmp(running, "from") == 0 |
| 267 | || strcasecmp(running, "in") == 0 |
| 268 | || strcasecmp(running, "into") == 0 |
| 269 | || strcasecmp(running, "like") == 0 |
| 270 | || strcasecmp(running, "near") == 0 |
| 271 | || strcasecmp(running, "next") == 0 |
| 272 | || strcasecmp(running, "not") == 0 |
| 273 | || strcasecmp(running, "of") == 0 |
| 274 | || strcasecmp(running, "off") == 0 |
| 275 | || strcasecmp(running, "on") == 0 |
| 276 | || strcasecmp(running, "onto") == 0 |
| 277 | || strcasecmp(running, "over") == 0 |
| 278 | || strcasecmp(running, "past") == 0 |
| 279 | || strcasecmp(running, "per") == 0 |
| 280 | || strcasecmp(running, "plus") == 0 |
| 281 | || strcasecmp(running, "sans") == 0 |
| 282 | || strcasecmp(running, "save") == 0 |
| 283 | || strcasecmp(running, "than") == 0 |
| 284 | || strcasecmp(running, "till") == 0 |
| 285 | || strcasecmp(running, "to") == 0 |
| 286 | || strcasecmp(running, "up") == 0 |
| 287 | || strcasecmp(running, "upon") == 0 |
| 288 | || strcasecmp(running, "on") == 0 |
| 289 | || strcasecmp(running, "onto") == 0 |
| 290 | || strcasecmp(running, "unto") == 0 |
| 291 | || strcasecmp(running, "via") == 0 |
| 292 | || strcasecmp(running, "vs") == 0 |
| 293 | || strcasecmp(running, "vs.") == 0 |
| 294 | || strcasecmp(running, "ye") == 0 |
| 295 | || strcasecmp(running, "with") == 0) { |
| 296 | for (i = 0; running[i] != '\0'; i++) { |
| 297 | if (isalpha(running[i])) |
| 298 | running[i] = tolower(running[i]); |
| 299 | } |
| 300 | } else if (isalpha(running[0])) |
| 301 | running[0] = toupper(running[0]); |
| 302 | |
| 303 | memmove(string, running, strlen(running)); |
| 304 | string += strlen(running); |
| 305 | running = strtok(NULL, " "); |
| 306 | if (running != NULL) { |
| 307 | memmove(string, " ", 1); |
| 308 | string++; |
| 309 | } |
| 310 | } |