В заданной строке каждое слово заменить количеством букв в этом слове - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание : в заданной строке каждое слово заменить количеством букв в этом слове ) Помогите , в С не шарю , а учитель туман ... Буду благодарен , за помощь !

Решение задачи: «В заданной строке каждое слово заменить количеством букв в этом слове»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
 
int word_end(int c);
 
int main() {
    FILE *in, *out;
    int count, i, s;
    in = fopen("in.txt", "r");
    out = fopen("out.txt", "w");
 
    count = i = 0;
    while (!feof(in)) {
        s = fgetch(in);
        if (word_end(s)) {
            if (count > 0) fprintf(out, "%d%c", count, s);
            count = 0;
        }
    }
    fclose(out);
    fclose(in);
}
 
int word_end(int c) {
    char *d = ",.!?:;-"; // разделители
    int i, len = 7; // сколько символов
    for (i = 0; i < len; i++) {
        if (c == d[i]) return 1;
    }
    return 0;
}

Объяснение кода листинга программы

В данном коде заменяется каждое слово в заданной строке на количество букв в этом слове. Список действий:

  1. Подключение необходимых библиотек
  2. Определение функции word_end(int c), которая проверяет является ли символ концом слова
  3. Открытие файлов in.txt и out.txt
  4. Инициализация переменных count, i, s
  5. Чтение файла in.txt посимвольно
  6. Если текущий символ является концом слова (функция word_end(int c) возвращает 1), то записывается в файл out.txt количество букв в этом слове (переменная count) и добавляется текущий символ
  7. Если текущий символ не является концом слова, то увеличиваем счетчик count на единицу
  8. Закрытие файлов out.txt и in.txt В функции word_end(int c) происходит следующее:
  9. Инициализация переменной len равной 7 (длина строки разделителей)
  10. Перебор символов в строке разделителей
  11. Если текущий символ строки разделителей равен заданному символу, то функция возвращает 1, иначе продолжает перебор
  12. Если все символы строки разделителей были проверены, то функция возвращает 0 (символ не является концом слова)

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы