Чтобы найти самое длинное слово в строке с помощью языка программирования 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;
}