Форум программистов, компьютерный форум CyberForum.ru

В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки - C++

Восстановить пароль Регистрация
 
truhin_evgeniy
3 / 3 / 0
Регистрация: 23.01.2014
Сообщений: 47
05.02.2014, 23:31     В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки #1
помогите с описанием кода какая функция за что отвечает?
Следует разработать программу, которая преобразует любой текстовый файл в другой текстовый файл по правилу: В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки

код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <assert.h>
 
//-----------------------------------------------------------------------------
int GetWord(char text[], char** begin, char** end) {
    for (; *text && isspace(*text); ++text) { ; }
    *begin = text;
    for (; *text && !isspace(*text); ++text) { ; }
    *end = text;
    return *end - *begin;}
//-----------------------------------------------------------------------------
char* GetLine(FILE* f) {
 
    static size_t len = 0;
    static char* str = NULL;
    char ch = fgetc(f);
 
    if ((ch == '\n') || (ch == EOF)) {
        if (len) {
            str = malloc(len + 1);
            str[len] = '\0';        }
        else {
            str = NULL;        }    }
    else {
        len++;
        str = GetLine(f);
        str[--len] = ch;    }
    return str;
}
//-----------------------------------------------------------------------------
void FromTo(FILE* fsrc, FILE* fdest) {
 
    char* str;
    char* begin;
    char* end;
    size_t len, maxlen;
    while (!feof(fsrc)) {
        str = begin = GetLine(fsrc);
        maxlen = 0;
        if (str) {
            while ((len = GetWord(begin, &begin, &end))) {
                if (maxlen < len) {
                    maxlen = len;                }
                begin = end;            }        }
 
        fprintf(fdest, "%s %u\n", str ? str : "", maxlen);
        free(str);    }}
 
int main() {
 
    FILE* fsrc;
    FILE* fdest;
    char nameSrc[256], nameDest[256];
    printf("input file: ");
    scanf("%255s", nameSrc);
 
    printf("output file: ");
    scanf("%255s", nameDest);
 
    fsrc = fopen(nameSrc, "r");
    if (fsrc == NULL) {
        perror(nameSrc);
        return 1;    }
    fdest = fopen(nameDest, "w");
    if (fdest == NULL) {
        perror(nameDest);
        fclose(fsrc);
        return 1;    }
    FromTo(fsrc, fdest);
 
    fclose(fdest);
    fclose(fsrc);
    return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 23:31     В конец каждой строки через пробел добавляется число, которое равно количеству символов в самом длинном слове данной строки
Посмотрите здесь:

Дан безразмерный массив.Вставить количество символов каждой строки вначало этой же строки. C++
Количество символов в самом длинном слове C++
Сравнить строки и по количеству символов, и по коду C++
Определить число символов в самом длинном слове строки C++
Заменить буквы в самом длинном слове на символы '*' C++
Строки. Вставить пробел после каждой нечетной буквы в слове C++
Требуется определить количество букв в самом длинном слове предложения C++
Добавить в конец каждой строки необходимо количество «*» что бы выровнять текст по правому краю большей строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru