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

Сжать файл (убрать пробелы) - C++

Восстановить пароль Регистрация
 
Lenavev
 Аватар для Lenavev
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 17
18.04.2014, 09:07     Сжать файл (убрать пробелы) #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
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
 
#define n 50
using namespace std;
 
int main ()
{ char mas[n];
    FILE *f1;
    f1= fopen ("file.txt", "r");
    for (int i=0; i<n; i++)
     fscanf (f1, "%s", &mas[i]);
     fclose (f1);
     cout << "File name";
     char s[10];
     cin >> s;
     ofstream out(s);
     for (int i=1; i<51; i++)
     {
     if( mas[i]!=' ')
     ifstream in(s);
     fprintf (f1,"%s", &mas[i]);
     }
     cout <<s<< endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Исправьте, пожалуйста ошибку, у меня открывается пустой новый файл
Задание:2. Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4257 / 3688 / 1243
Регистрация: 14.04.2014
Сообщений: 14,440
18.04.2014, 09:35     Сжать файл (убрать пробелы) #2
fclose (f1); поставь после цикла for по i.
Lenavev
 Аватар для Lenavev
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 17
18.04.2014, 09:41  [ТС]     Сжать файл (убрать пробелы) #3
все равно новый файл - пустой

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
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
 
#define n 50
using namespace std;
 
int main ()
{ char mas[n];
    FILE *f1;
    f1= fopen ("file.txt", "r");
    for (int i=0; i<n; i++)
     fscanf (f1, "%s", &mas[i]);
     cout << "File name";
     char s[10];
     cin >> s;
     ofstream out(s);
     for (int i=1; i<51; i++)
     {
     if( mas[i]!=' ')
     ifstream in(s);
     fprintf (f1,"%s", &mas[i]);
     }
      fclose (f1);
     cout <<s<< endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Lenavev
 Аватар для Lenavev
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 17
12.05.2014, 20:52  [ТС]     Сжать файл (убрать пробелы) #4
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
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include "stdio.h"
 
using namespace std;
 
int main ()
{ int n= 20;char mas[n];
    FILE *f1;
      
    f1= fopen ("file.txt", "r");
    fscanf (f1, "%c", &mas[0]);
    n=0;
    while (mas[n]!='\0')
        {   n++ ; fscanf (f1, "%c", &mas[n]);  
        //  cout << mas[n];
          }
          fclose (f1);
          
     cout<<endl;
     cout << "File name";
     char s[10];
     cin >> s;
    f1=fopen (s, "wb");
    // cout << s;
     ifstream out(s);
     for (int i=1; i<21; i++)
     {
     if( mas[i]!=' ')
     
     ofstream in(s);
     fprintf (f1,"%c", &mas[i]);
     }
 
      fclose (f1);
    // cout <<s<< endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

_______________

переделала задачу, она работает но не совсем правильно , помогите исправить ошибки
Tripolis
1 / 1 / 1
Регистрация: 21.03.2013
Сообщений: 10
12.05.2014, 20:58     Сжать файл (убрать пробелы) #5
Lenavev, оно точно не вылетает? У вас цикл как минимум неправильно написан.
C++
1
2
3
4
5
int n= 20;
char mas[n]; 
for (int i=1; i<21; i++)
{
if( mas[i]!=' ')
В С++ итерация массива идет с 0. Исправте на
C++
1
for (int i=0; i<20; i++)
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
12.05.2014, 21:09     Сжать файл (убрать пробелы) #6
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main ()
{ 
   const int n= 100;
   char mas[n];
   ifstream f1("file.txt", ios::in);
   if(!f2)
   {
       cout<<"input file file.txt open error\n";
       system("PAUSE");
       return EXIT_SUCCESS;
   }
   cout << "Output File name:";
   char s[100];
   cin >> s;
   ofstream f2(s, ios::out);
   if(!f2)
   {
       cout<<"output file open error\n";
       system("PAUSE");
       return EXIT_SUCCESS;
   }
   while( f1>>mas) // в mas вводятся только слова без пробелов
         f2<<mas; // пишем mas в f2 и пробелы тю-тю 
   f1.fclose();
   f2.fclose();
   cout<<"Success!\n";    
   system("PAUSE");
   return EXIT_SUCCESS;
}
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 238
12.05.2014, 21:30     Сжать файл (убрать пробелы) #7
zss, в 10 строке же должно быть f1
а в 28 и 29 не fclose, а просто close
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.05.2014, 22:10     Сжать файл (убрать пробелы) #8
Цитата Сообщение от Vergil Посмотреть сообщение
в 10 строке же должно быть f1
а в 28 и 29 не fclose, а просто close
Вот до чего копипаста доводит.
zss, для ifstream режим открытия по умолчанию и так ios_base::in. Равно как и для ofstream - ios_base::out.
Закрывать файловые потоки явно тут вообще без надобности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2014, 18:02     Сжать файл (убрать пробелы)
Еще ссылки по теме:

Сжатие данных. Можно ли сжать любой 100-байтовый файл хотя бы на 1 бит? C++
Отфильтровать в файле пустые строки и убрать пробелы C++
Убрать пробелы в конце строки C++

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

Или воспользуйтесь поиском по форуму:
Lenavev
 Аватар для Lenavev
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 17
13.05.2014, 18:02  [ТС]     Сжать файл (убрать пробелы) #9
спасибо огромное)
Yandex
Объявления
13.05.2014, 18:02     Сжать файл (убрать пробелы)
Ответ Создать тему
Опции темы

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