Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Ruslan116
0 / 0 / 0
Регистрация: 06.06.2016
Сообщений: 1
1

Удалить из файла все однобуквенные слова и лишние пробелы

06.06.2016, 22:23. Просмотров 895. Ответов 1
Метки нет (Все метки)

Дан символьный файл f. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Удалить из файла все однобуквенные слова и лишние пробелы. Результат записать в файл g
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2016, 22:23
Ответы с готовыми решениями:

Удалить из файла все однобуквенные слова и лишние пробелы
Дан символьный файл f. Группы символов, разделенные пробелами (одним или несколькими) и не...

Удалить из файла с текстом все лишние пробелы
удалить из файла с текстом все лишние пробелы. Оставшееся переписать во второй файл

Удалить из текстового файла все лишние пробелы, оставив между словами не более одного пробела
Дано вот такое задание: Дан текстовый файл. Удалить из него все лишние пробелы, оставив между...

Удалить из файла однобуквенные слова
В текстовом редакторе создать файл и реализовать программу его обработки) :-D. Полученные данные ...

Удалить из сообщения все однобуквенные слова
Удалить из сообщения все однобуквенные слова на СИ

1
Геомеханик
798 / 602 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
07.06.2016, 19:06 2
Лучший ответ Сообщение было отмечено Ruslan116 как решение

Решение

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdio.h>
#include <ctype.h>
#include <malloc.h>
char* s_format(char* s);
int   file_format(const char* _output, const char* _input);
 
int main(void){
    char _input[]  = "f.txt";
    char _output[] = "g.txt";
    if(! file_format(_output, _input))
        puts("error!");
    return 0;
}
 
int file_format(const char* _output, const char* _input){
    long   num;
    char*  buf, *p;
    size_t len;
    FILE*  fin, *fout;
 
    if((fin = fopen(_input, "rb")) == NULL)
        return 0;
 
    fseek(fin, 0L, SEEK_END);
    if((num = ftell(fin)) <= 0L){
        fclose(fin);
        return 0;
    }
 
    buf = (char*)malloc((size_t)(num + 1) * sizeof(char));
    if(buf == NULL){
        fclose(fin);
        return 0;
    }
    fseek(fin, 0L, SEEK_SET);
 
    len = fread(buf, sizeof(char), (size_t)num, fin);
    fclose(fin);
    if(len != (size_t)num){
        free(buf);
        return 0;
    }
 
    if((fout = fopen(_output, "wb")) == NULL){
        free(buf);
        return 0;
    }
    buf[len] = '\0';
 
    p   = s_format(buf);
    num = (long)(p - buf);
    len = fwrite(buf, sizeof(char), (size_t)num, fout);
    num = (len != (size_t)num) ? 0L : 1L;
 
    fflush(fout);
    fclose(fout);
    return (num == 1L);
}
 
char* s_format(char* s){
    char* a, *b, *p;
    //удаление однобуквенных символов
    for(a = b = s; *a; *a = *b){
        if(isalpha(*b)){
            if(! isalpha(*(b + 1)))
                ++b;
            else {
                while(*b && isalpha(*b))
                    *a++ = *b++;
            }
            continue;
        }
        ++a;
        ++b;
    }
 
    //удаление лишних пробелов
    for(a = b = s; *a; *a = *b){
        if(*b == ' '){
            p = b;
            while(*p == ' ')
                ++p;
            if((p - b) > 1){
                *a++ = *b;
                b    = p;
                continue;
            }
        }
        ++a;
        ++b;
    }
    return a;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2016, 19:06

Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся
Дана строка предложение. Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся. ...

В символьной строке удалить все лишние подряд идущие пробелы
Помогите написать программу. Все изменения строки производить в том же массиве. Не допускается...

Удалить из файла лишние пробелы, оставив по одному между словами
Добрый день. Помогите с программой. Заранее спасибо. Дан файл, содержащий некоторый текст....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru