Проблема со строками (С)
Программа должна найти самое длинное слово из введённой строки и вывести строку без самого длинного слова.
Пока что смог реализовать деление слов через "/", так как просто не понимаю как реализовать это через пробел,и обсчёт максимальной длинны. Осталось перебрать значения и вывести строку без слова с максимальной длинной. Перепробовал разные подходы с массивами но результата не получил поэтому и обращаюсь к вам.
Заранее спасибо!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void main()
{
int max_len = 0;
char str[240];
scanf("%s", &str);
char sep[10] = "/";
char* istr;
printf("Line %s\n", str);
printf("Result \n");
istr = strtok(str, sep);
while (istr != NULL)
{
if (strlen(istr) > max_len)
{
max_len = strlen(istr);
}
printf(" \n%s [%d] ", istr, strlen(istr));
istr = strtok(NULL, sep);
}
printf("\n%d", max_len);
}
Ответы (1 шт):
Автор решения: Павел Ериков
→ Ссылка
Вот пример обновленного вашего кода с комментариями:
void main()
{
int max_len = 0;
char str[240];
scanf("%s", &str);
char sep[10] = "/";
char* istr;
printf("Line %s\n", str);
printf("Result \n");
istr = strtok(str, sep);
//Кол-во слов
int count = 0;
//Максимальное кол-во слов
const int MAX_COUNT = 10;
//Максимальная длина слова
const int MAX_SIZE = 40;
//Массив слов
char words[MAX_COUNT][MAX_SIZE];
//Индекс максимально длинного слова
int max_index = 0;
while (istr != NULL)
{
//Копируем строку istr в массив слов
strcpy(words[count], istr);
//Увеличиваем счетчик слов
++count;
if (strlen(istr) > max_len)
{
max_len = strlen(istr);
max_index = count - 1;
}
printf(" \n%s [%d] ", istr, strlen(istr));
istr = strtok(NULL, sep);
}
printf("\n%d", max_len);
}