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

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

Войти
Регистрация
Восстановить пароль
 
mcpetters
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 11
#1

Работа с файлами - C++

27.11.2012, 18:41. Просмотров 376. Ответов 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
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
#include <stdio.h>
#include <string.h>
#define ftete1 fopen("h:\\1.txt","r")
#define ftete2 fopen ("h:\\2.txt","w")
 
int alg0 ()
{
  FILE *f2,*f1;
 
  int a;
 
  char c;
  f1=ftete1;
 
  if (f1==NULL)
  {
    printf ("файл не найден \n");
 
   return 1;
  }
  f2=ftete2;
 
  if (f2!=NULL)
  {
    printf ("файл найден \n заменить его?\n 1-да\n 2-может да, но скорее нет\n");
    scanf ("%d",&a);
 
    switch (a)
    {
 
      case 1: f2=ftete2; break;
 
      case 2: return 2;
    }
  }
  fclose (f1);
  fclose (f2);
 
  return 0;
}
void alg1()
{
  FILE *f1,*f2;
 
  char c;
 
  int l=0,length=0,s,i;
  f1=ftete1;  
  fseek(f1,0,SEEK_END);
  s=ftell(f1);
  fseek(f1,0,SEEK_SET);
 
  for (i=1;i<=s;i++)
  {
    fseek (f1,i,SEEK_SET);
 
      while (c!=' ')
      {
        fscanf (f1,"%c",&c);
        printf ("c",c);
        l++;
      }
 
 
      if (l>=length)
      {
        length=l;
        fseek (f1,0-length,SEEK_CUR);
        f2=ftete2;
 
        while (c!=' ')
        {
          fscanf (f1,"%c",&c);
          fprintf (f2,"%c",c);
        }
        fclose (f2);
      }
      l=0;
      fscanf (f1,"%c",&c);
    }
    fclose (f1); 
}
 
int main ()
{
  alg0();
  alg1();
 
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2012, 18:41     Работа с файлами
Посмотрите здесь:

Работа с файлами - C++
Помогите пожалуйста с этой задачей: даны файлы f и g, компоненты которых являются целыми числами. Записать в файл h сначала компоненты...

работа с файлами - C++
Помогите пожалуйста. Нужно составить программу, которая читает текстовый файл и в каждой строке все слова размещает в алфавитном порядке....

Работа с файлами - C++
Хотелось бы разобраться как работать с файлами. Придумал программу самую простенькую, хочу загнать ее в файл. #include &lt;stdio.h&gt; ...

Работа с файлами - C++
Программа полностью рабочая. Кроме одного момента. #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt;...

работа с файлами - C++
мне бы надо на C........... помогите пожалуйста, а то чет не могу разобраться #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...

Работа с файлами - C++
Добрый день! Помогите, пожалуйста с задачей -- я в С++ совсем чайник. Просто хотя бы подскажите каким методом делать или пример...

Работа с файлами - C++
Здравствуйте! Подскажите какие нибудь сторонние библиотеки для работы с файлами. Мне нужно реализовать систему сохранения/загрузки данных,...

работа с файлами - C++
Подскажите, как в текстовом файле напечатать все строки, длина которых равна заданному числу?

Работа с файлами - C++
Открыть каталог, проверить файлы на обычность, проверить в именах файлов наличие знака $, и если он есть заменить на размер файла. ...

Работа с файлами в С++ - C++
Дан текстовый файл. Нужно напечатать все строки, длина которых равна заданному числу.

Работа с файлами - C++
Задание : напишите программу, которая объединяет возможности программ “Добавление в файл” и “Поиск по файлу”. При запуске программы на...

Работа с файлами - C++
В исходном текстовом файле есть float – числа в формате с фиксированной точкой (5 знаков после запятой). Создать новый файл из...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
27.11.2012, 20:20     Работа с файлами #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
#include <iostream>
#include <fstream>
#include <vector>
#include <conio.h>
 
int main(){
    setlocale(LC_ALL, "RUS");
    std::vector<char> str;
    std::vector<int> SIZE_ARRAY;
    std::vector<int> point;
    int size(0), SIZE_STR(0);
    std::fstream file;
    file.open("in.txt", std::fstream::in);
    if(!file.is_open()){ //Проверка, существует ли файл in.txt
                        std::cout << "Файл не был открыт!";
                        file.close();
                        _getch();
                        return -1;
                        }
    while(!file.eof()){ //Чтение из файла in.txt символов в вектор str
                       str.push_back(size);
                       file.get(str[size]);
                       size++;
                       }
    file.close();
    for(int i = 0, n = 0; i < size; i++){ //Заносит в вектор SIZE_ARRAY длинны слов (один(4) два(3)) и в вектор point индекс с которой начинается каждое слово
            if(str[i] != ' ' && i != size-1){
                      SIZE_STR++;
                      }
            else{
                 SIZE_ARRAY.push_back(n+1);
                 point.push_back(n);
                 SIZE_ARRAY[n] = SIZE_STR;
                 point[n] = i - SIZE_STR;
                 SIZE_STR = 0;
                 n++;
                 }
            }
            int Np = SIZE_ARRAY[0];
            int point_Fl(0);
    for(int i = 0; i < SIZE_ARRAY.size(); i++){ //находит самое длинное слово(состоящее из SIZE_ARRAY букв начинающееся с индекса point) с помощью вектора SIZE_ARRAY
                    if(Np < SIZE_ARRAY[i]){
                          Np = SIZE_ARRAY[i];
                          point_Fl = i;
                          }
            }
    std::ofstream file_out("out.txt");
    for(int i = point[point_Fl]; i < str.size()-1; i++){ //распечатываем все от point[point_Fl] до пробела
            if(str[i] == ' '){ break; }
            file_out << str[i];
            }
    file_out.close();
    }
Yandex
Объявления
27.11.2012, 20:20     Работа с файлами
Ответ Создать тему
Опции темы

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