Другие языки программирования и технологии

Помогите с задачкой в Си, уже совсем голова не соображает :(

Дана символьная строка, в которой слова перечислены через точку с запятой, общая длина <=80. Найти и напечатать все слова которые начинаются и оканчиваются на одинаковую букву.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

main() {
    char s[81], *p;
    printf("string? ");
    fgets(s, 81, stdin);
    p = strtok(s, ";\n");
    printf("\nresult:\n");
    while (p != NULL) {
        if (p[0] == p[strlen(p) - 1]) printf("%s\n", p);
        p = strtok(NULL, ";\n");
    }
}

-----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

main() {
    char s[81], *p, *b = s, *w;
    printf("string? ");
    fgets(s, 81, stdin);
    printf("\nresult:\n");
    for (p = s; *p != '\0'; ++p) {
        if (*p == ';' || *p == '\n') {
            if (*b == *(p - 1)) {
                for (w = b; *w != ';' && *w != '\n'; ++w) putchar(*w);
                putchar('\n');
            }
            b = p + 1;
        }
    }
}
Виктор Порохов
Виктор Порохов
85 120
Лучший ответ
Андрей Плотников Какой раз спасаешь уже, спасибо !
Можно перебрать строку по символам (фором) . Если попалась точка с запятой, сравнить тот символ, что перед ней с тем символом, который мы запомнили после предыдущей точки с запятой (для первого случая с нулевым) . Есливдругчистослучайнотаксложилосьчто эти символы совпали, вывести подстрокумежду этими символами. Реализуй на здоровье.
Хайит Солиев
Хайит Солиев
2 031