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

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

24.12.2015, 21:39. Просмотров 543. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2015, 21:39
Ответы с готовыми решениями:

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

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

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

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

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

2
Hikari
Хитрая блондиночка $)
1455 / 968 / 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
sashalu
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 21
24.12.2015, 21:55  [ТС] 3
Тут как раз ещё одно под задание: программа должна работать через буфер потому что обрабатывая очень большие файлы она через буфер делает это гораздо быстрее
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2015, 21:55

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

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

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


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

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

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