Поиск самого длинного слова в строке в C: методы и примеры

Чтобы найти самое длинное слово в строке с помощью языка программирования C, можно использовать несколько методов. Вот несколько подходов:

Метод 1: использование функции strtok()

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "This is a sample string";
    char* token = strtok(str, " ");
    char* longestWord = token;
    while (token != NULL) {
        if (strlen(token) > strlen(longestWord)) {
            longestWord = token;
        }
        token = strtok(NULL, " ");
    }
    printf("Longest word: %s\n", longestWord);
    return 0;
}

Метод 2. Использование цикла

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "This is a sample string";
    char longestWord[100];
    char currentWord[100];
    int i = 0, j = 0;
    for (i = 0; str[i] != '\0'; i++) {
        if (str[i] != ' ') {
            currentWord[j++] = str[i];
        } else {
            currentWord[j] = '\0';
            if (strlen(currentWord) > strlen(longestWord)) {
                strcpy(longestWord, currentWord);
            }
            j = 0;
        }
    }
    currentWord[j] = '\0';
    if (strlen(currentWord) > strlen(longestWord)) {
        strcpy(longestWord, currentWord);
    }
    printf("Longest word: %s\n", longestWord);
    return 0;
}

Метод 3. Использование рекурсии

#include <stdio.h>
#include <string.h>
void findLongestWord(char str[], char longestWord[], int start, int end, int maxLength) {
    int i, j = 0;
    char currentWord[100];
    for (i = start; i < end; i++) {
        if (str[i] != ' ') {
            currentWord[j++] = str[i];
        } else {
            currentWord[j] = '\0';
            if (strlen(currentWord) > maxLength) {
                maxLength = strlen(currentWord);
                strcpy(longestWord, currentWord);
            }
            j = 0;
        }
    }
    currentWord[j] = '\0';
    if (strlen(currentWord) > maxLength) {
        maxLength = strlen(currentWord);
        strcpy(longestWord, currentWord);
    }
    if (str[end] == '\0') {
        return;
    } else {
        findLongestWord(str, longestWord, end + 1, end + 1, maxLength);
    }
}
int main() {
    char str[] = "This is a sample string";
    char longestWord[100] = "";
    int maxLength = 0;
    findLongestWord(str, longestWord, 0, 0, maxLength);
    printf("Longest word: %s\n", longestWord);
    return 0;
}