Применение библиотечных функций для работы c символами и символьными рядками

Tonzik

В символьной строке вывести предпоследнее слово.
Кликните здесь для просмотра всего текста
Предложение: Мама мыла раму Предпоследнее слово: мыла
1 ответ

Tonzik

По-тупому, без затей:
#include <stdio.h>
#include <string.h>
 
#define DELIM " \t\n"
 
int main(void) {
    char buf[BUFSIZ], * pFirst, * pSecond, * pCurrent;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
        if ( ! ( pFirst = strtok(buf, DELIM) ) ) {
            fprintf(stderr, "String is empty!\n");
            continue;
        }
        if ( ! ( pSecond = strtok(NULL, DELIM) ) ) {
            fprintf(stderr, "Only one word in string!\n");
            continue;
        }
        
        while ( pCurrent = strtok(NULL, DELIM) ) {
            pFirst = pSecond;
            pSecond = pCurrent;
        }
        
        printf("Second word to last: %s\n", pFirst);
    }
    
    return 0;
}
~/cpp/strings $ gcc -o second_word_to_last second_word_to_last.c 
~/cpp/strings $ ./second_word_to_last 
String: any many money more
Second word to last: money
String: single
Only one word in string!
String: next string will be of spaces only
Second word to last: spaces
String:    
String is empty!
String: 
~/cpp/strings $