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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Kyter
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 22
#1

Программа, работа с файлами - C++

14.05.2010, 07:12. Просмотров 1153. Ответов 15
Метки нет (Все метки)

Нужно разработать программу, которая ставит в начало каждой строки текстового файла столько пробелов, сколько в ней их встречается
Кто может, помогите пожалуйсто
Вот часть программы, который я написал, но она не робит, незнаю почему
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
#include <stdio.h>
#include <fstream.h>
#include <alloc.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
 
void main ()
{
 FILE *in;
 unsigned int i,u,j;
 j=0;
 char c;
 char str[100];
 char a[2];
 a[1]=' ';
  in=fopen("C:\cpp\BC\BIN\f1.txt","r");
   fgets (str,50,in);
   for (i=0;;i++)
  {
  fscanf (in,"%c",c);
  if (c==' ') {j++;}
  if (c=='\n') {break;}
  }
  fclose(in);
 in=fopen("C:\cpp\BC\BIN\f1.txt","a");
  fseek (in,i,SEEK_SET);
    for (u=0;;u++)
 {
  fprintf (in,"%c",a[1]);
  if (u>j) {break;}
 }
 fclose(in);
 getch();
}
Добавлено через 13 часов 15 минут
Поможет кто?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2010, 07:12     Программа, работа с файлами
Посмотрите здесь:

Программа зависает(работа с файлами) - C++
вот код программы: // diskfun.cpp // Чтение из файла и запись нескольких объектов #include &lt;fstream&gt; // для файловых потоков ...

Консольная программа тестирования [работа с текстовыми файлами] - C++
Здравствуйте. Первый раз программирую на С++. Есть &quot;ТЗ&quot;: разработать программу для тестирования знаний учащихся (курсач). Подскажите,...

программа с++ про количество слов (работа с файлами) - C++
Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на экран количество слов в этом файле. Первую половину слов записать...

программа с файлами - C++
ХЕЛП! Даны инвентарный файл F, содержащий сведения о количестве изделий разных видов продукции, хранящейся на складе (вид продукции...

работа с файлами - C++
подскажите пожалуйста a. В текстовом файле хранятся квадратные вещественные матрицы порядка n (n – const). Преобразовать файл, удалив...

Работа с файлами - C++
В магазине имеются различные товары, причем каждому товару в качестве названия присвоен целочисленный код. Для контроля за наличием...

Работа с файлами - C++
Помогите решить проблему. Нужно записать найденные значения в файл G(output) Дано 2 файла F(input) и G(output) Программа работает...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gh05t
47 / 46 / 4
Регистрация: 03.04.2010
Сообщений: 99
14.05.2010, 08:32     Программа, работа с файлами #2
C++
1
in=fopen("C:\cpp\BC\BIN\f1.txt","r");
замени на

C++
1
in=fopen("C:\\cpp\\BC\\BIN\\f1.txt","r");
ну и в 26 строке соответственно.
Kyter
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 22
14.05.2010, 13:47  [ТС]     Программа, работа с файлами #3
Тоже не робит, смотрел по шагам, переменную j он не увелиивает (1 цыкл)
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.05.2010, 13:59     Программа, работа с файлами #4
Цитата Сообщение от Kyter Посмотреть сообщение
C
1
fscanf (in,"%c",c);
C
1
fscanf(in, "%c", &c);
функция должна принимать указатель
Kyter
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 22
14.05.2010, 14:52  [ТС]     Программа, работа с файлами #5
Во, спасибо, вродибы заработало, но криво. Чтобы программа хоть как то работала, нужно в файле f1 перейти на новую строку, если этого не сделать, прогамма зависает
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
#include <stdio.h>
#include <fstream.h>
#include <alloc.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
 
void main ()
{
 FILE *in;
 unsigned int i,u,j;
 j=0;
 char c;
 char str[100];
  in=fopen("C:\\cpp\\BC\\BIN\\f1.txt","r");
//  fseek (in,0,SEEK_SET);
   for (i=1;;i++)
  {
  fscanf (in,"%c",&c);
  if (c==' ') {j++;}
  if (c=='\n' || c=='\r') {break;}
  }
  fclose(in);
 in=fopen("C:\\cpp\\BC\\BIN\\f1.txt","a");
  i=u;
  fseek (in,0,SEEK_SET);
    for (u=1;;u++)
 {
  fprintf (in,"%c",' ');
  if (u==j) {break;}
 }
 fclose(in);
// getch();
 
}
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.05.2010, 15:32     Программа, работа с файлами #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
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <stdlib.h>
 
int main ()
{
   int i = 0;
   int nspace = 0;
 
   FILE *in;
 
   if((in = fopen("file.txt", "r")) == NULL)
   {
      puts("error: can't open file for read");
      return -1;
   }
 
   char c = 0;
   for(i = 0; c != '\n' && c != '\r' && !feof(in); ++i)
   {
      fscanf(in, "%c", &c);      
      if(c == ' ') 
         ++nspace;
   }
 
   fclose(in);
 
   if((in = fopen("file.txt", "a")) == NULL)
   {
      puts("error: can't open file for write");
      return -1;
   }
 
   fseek(in, 0, SEEK_SET);
 
   for(i = 0; i != nspace; ++i)
      fprintf(in, "%c", ' ');
   
   fclose(in);
   
   system("pause");   
}
Kyter
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 22
16.05.2010, 09:19  [ТС]     Программа, работа с файлами #7
Да, в конец, незнаю,как сделать в начало, через ф-цию fseek() не получается, надо как то по другому, только вот как? Вот написал это сам, и столкнулся с той же проблемой, он записывает пробелы в конец строки. Если кто может помочь отредактировать мою программу, помогите. Спасибо
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
#include <stdio.h>
#include <fstream.h>
#include <alloc.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
 
void main ()
{
 FILE *in;
 unsigned int i,u,j,q;
 j=0;
 char c;
 char str[100];
  in=fopen("C:\\cpp\\BC\\BIN\\f1.txt","rt");
   fgets (str,128,in);
     for (i=0;;i++)
  {
  if (str[i]==' ') {j++;}
  if (str[i]=='\n' || str[i]=='\r') {break;}
  }
  fclose(in);
 in=fopen("C:\\cpp\\BC\\BIN\\f1.txt","at");
//  i=u;
  fseek (in,0,SEEK_SET);
    for (u=1;;u++)
 {
  fprintf (in,"%c",' ');
  if (u==j) {break;}
 }
 fclose(in);
// getch();
 
}
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.05.2010, 09:59     Программа, работа с файлами #8
Пробуй так: сначала прочитать весь файл в буфер, обработать буфер нужным образом и поместить буфер в файл. Потому что режим добавления данных подразумевает нулевую позицию в конце исходного файла. Я не думаю, что файлы будут настолько большими, что их не получиться прочитать целиком в память. Если же они будут действительно большими, то читай строку в буфер, обрабатывай ее и записывай в новый файл. Затем старый файл удалить и либо скопировать из нового, либо переименовать новый.
Kyter
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 22
17.05.2010, 14:49  [ТС]     Программа, работа с файлами #9
Сделал с масивами программу, но опять же не работает, думаю проблемы с выделением/отчисткой памяти, подскажите, в чем ошибка
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 <stdio.h>
#include <fstream.h>
#include <alloc.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
 
void main ()
{
 FILE *in;
 unsigned int i,j;
 j=0;
 char str[128];
 char str2[128];
  in=fopen("C:\\cpp\\BC\\BIN\\f1.txt","rt");
 
  str[128]='\0';
  free(str);
  str2[128]='\0';
  free(str2);
 
   fgets (str,128,in);
   for (i=0;;i++)
  {
  if (str[i]==' ') {j++;}
  if (str[i]=='\n' || str[i]=='\r') {break;}
  }
  fclose(in);
 
  in=fopen("C:\\cpp\\BC\\BIN\\f1.txt","wt");
  for(i=0;i>j;i++)
  {
    str2[i]=' ';
  }
  strcat(str2,str);
  free(str);
  fputs(str2,in);
  free(str2);
  fclose(in);
//  getch();
 
}
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.05.2010, 20:19     Программа, работа с файлами #10
скажите, а зачем вы используете здесь free?
Kyter
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 22
17.05.2010, 20:29  [ТС]     Программа, работа с файлами #11
Для отчистки масива
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.05.2010, 20:38     Программа, работа с файлами #12
Цитата Сообщение от Kyter Посмотреть сообщение
Для отчистки масива
Вам следует побольше почитать про эту функцию. Для очистки массива используйте функцию memset.
например вот так:
char str[n];
memset(str, 0, n);
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
17.05.2010, 23:35     Программа, работа с файлами #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string>
#include <fstream>
using namespace std;
//void massiv (char*);
 
int main()
{   ifstream in ("111.txt");
    ofstream out ("222.txt");
    string s1, s2;
    while (getline (in,s1)){ 
        int x=0 , i=0; s1=s1+"\n";
        cout <<s1;
        while (s1[i]!='\n') 
        {   
            if (s1[i]==' ') x++; i++;} // считаем пробелы
        for (int i=0; i<=x; i++) s2=s2+" ";
        s2=s2+s1;
        out <<s2;}
 
return 0;
}
с файла в файл пишет без проблем

Добавлено через 1 час 19 минут
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
#include <iostream>
#include <stdio.h>
#include <string>
#include <fstream>
using namespace std;
//void massiv (char*);
 
int main()
{   ifstream in ("111.txt");
    ofstream out ("222.txt");
    string s1;
    while (getline (in,s1)){ 
        int x=0 , i=0; s1=s1+"\n";
        
        while (s1[i]!='\n') 
        {   
            if (s1[i]==' ') x++; i++;} // считаем пробелы
        string s2;
        for (int i=0; i<=x; i++) s2=s2+" ";
        s2=s2+s1;
        cout <<s2;
        out <<s2;
        }
return 0;}
пардон ошибочка маленькая была)))
Kyter
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 22
18.05.2010, 12:21  [ТС]     Программа, работа с файлами #14
спасибо большое всем)
spider2010
Сообщений: n/a
06.06.2010, 20:49     Программа, работа с файлами #15
сорри
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2010, 17:58     Программа, работа с файлами
Еще ссылки по теме:

работа с файлами - C++
Текст берётся из файла. Ка ксделать используя библиотеку fstream знаю, но надо сделать без неё то есть простые fread, fwrite и т.д.)....

Работа с файлами. - C++
Всем Доброго времени суток. С сегодняшнего дня в инсте стали задавать задачи, на работу с файлами. Раньше с таким не сталкивался, поэтому...

Работа с файлами - C++
У меня вот такая задача. Есть текстовик с неким текстом(не пуст), из него нужно добыть все символы, которые там встречаются и записать их в...

Работа с файлами - C++
Здравствуйте! Помогите, пожалуйста! Не представляю, что делать с задачей Дан текст в файле F1. Описать функцию, которая после...

работа с файлами - C++
Здравствуйте! Написать программу, определяющую сумму &quot;S=1/2+......+1/10,&quot; записывать S во внешний файл, закрыть файл, открыть файл и...


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

Или воспользуйтесь поиском по форуму:
Artem158
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
07.06.2010, 17:58     Программа, работа с файлами #16
ПОМОГИТЕ, оч прошу...ХЕЛП!!!

Создать текстовый файл с помощью ввода с клавиатуры его
строк. Определить в каждом парном строке слово максимальной
длины и записать его в конце предыдущего нечетного строки
Yandex
Объявления
07.06.2010, 17:58     Программа, работа с файлами
Ответ Создать тему
Опции темы

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