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

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

24.12.2015, 21:39. Просмотров 1008. Ответов 2
Метки нет (Все метки)


Дано вот такое задание: Дан текстовый файл. Удалить из него все лишние пробелы, оставив между словами не более одного пробела. Результат поместить в новый файл. Вроде бы задание сделано верно но что то идет не так а разобраться где именно ошибка не могу .
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
int main() { 
 
FILE* fl1; 
FILE* fl2; 
char c1, c; 
int a,i; 
long size; 
char *buffer=NULL, *buffer2=NULL; 
setlocale (LC_ALL, "RUS"); 
fopen_s(&fl1,"input.txt","r"); 
fopen_s(&fl2,"output.txt","w"); 
if (fl1 == NULL) 
{ 
fopen_s(&fl1,"input.txt", "w"); 
printf("Файл не существовал.\nНажмите Enter для закрытия программы.\Введите текст в файл и запустите программу заново.\n"); 
system("pause"); 
exit (1); } 
size = _filelength( _fileno(fl1) ); 
 
if(size==NULL) 
{ 
puts("Файл пустой! Проверьте содержание файла.\n"); 
system("pause"); 
exit (1); 
} 
buffer=(char*)malloc(1024*sizeof(char)); 
buffer2=(char*)malloc(1024*sizeof(char)); 
if((!buffer) || (!buffer2)) 
{ 
puts("Ошибка, память для буфера не выделена, нажмите Enter."); 
_getch(); 
exit(1); } 
 
 
while(!feof(fl1)) { 
a=fread(buffer, sizeof(char), 1024, fl1); 
for(i=0;i<a;i++){ 
c=*(buffer+i); 
c1=*(buffer+i+1); 
if (c == ' ') { 
if (c1==' ') 
i++; 
} 
 
*(buffer2+i)=c; 
 
fwrite(buffer2,sizeof(char),1024,fl2); 
 
if (a<1024) 
    
break ; 
 
} 
 
 
if(ferror(fl2)) 
perror ("Ошибка при выводе символа."); 
fclose(fl1); 
if(ferror(fl1)) 
perror ("Ошибка при закрытии файла."); 
fclose(fl2); 
printf("Результат выведен так же в файл для вывода.\n"); 
system("pause"); 
exit (0); 
}}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2015, 21:39
Ответы с готовыми решениями:

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

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

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

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

2
Хитрая блондиночка $)
1461 / 976 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
24.12.2015, 21:49 2
Цитата Сообщение от sashalu Посмотреть сообщение
Дан текстовый файл. Удалить из него все лишние пробелы, оставив между словами не более одного пробела.
Хм...
C
1
2
3
4
5
char c;
while(!feof(fl1)){
 c=fgetc(fl1); fputc(fl2,c);
 for(;c==' ';c=fgetc(fl1)); fputc(fl2,c);
}
может не совсем быстрое решение, но думаю подходит.
0
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 21
24.12.2015, 21:55  [ТС] 3
Тут как раз ещё одно под задание: программа должна работать через буфер потому что обрабатывая очень большие файлы она через буфер делает это гораздо быстрее
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2015, 21:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

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

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


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

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

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