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

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

Восстановить пароль Регистрация
 
mcpetters
0 / 0 / 0
Регистрация: 24.05.2012
Сообщений: 11
27.11.2012, 18:41     Работа с файлами #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++
C++ Работа с файлами.
C++ Работа с файлами
C++ работа с файлами
[С++] Работа с файлами C++
Работа с файлами C++
C++ Работа с файлами
C++ Работа с файлами в C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JlightenDev_C++
 Аватар для 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     Работа с файлами
Ответ Создать тему
Опции темы

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