Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Vandervals
0 / 0 / 1
Регистрация: 27.10.2013
Сообщений: 12
#1

Чтение строки из файла - C++

23.12.2013, 17:39. Просмотров 434. Ответов 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
#include "StdAfx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <iomanip> 
#include <string.h>
#include <string>
#include <ctype.h>
 
using namespace std;
int main()
{
    setlocale (LC_ALL,".1251");
    FILE *fin = fopen("input.txt", "r");
    FILE *fout = fopen("output.txt", "w");
    if (!fin)
    {
        cout<<"Не могу создать входной файл."<<endl;
        system ("pause");
        return 1;
    }
    if (!fout)
    {
        cout<<"Не могу создать выходной файл."<<endl;
        system ("pause");
        return 1;
    }
    const int max=255;
    char *prov1;
    char * str=new char[max];
    int posmax, posmin;
    int MAX=0, MIN=254;
    string str2;
    string smax, smin;
    fgets(str,max,fin);
    cout<<"Результат выполнения программы:"<<endl;
    while (!feof(fin))
    {
        str[strlen(str)-1]='\0';
        str2=str;
        prov1=strtok(str," ");
        while (prov1 != NULL)
        {
            if (strlen(prov1)>=MAX)
            {
                smax=prov1;
                MAX=strlen(prov1);
            }
            if (strlen(prov1)<=MIN)
            {
                smin=prov1;
                MIN=strlen(prov1);
            }
            prov1=strtok(NULL, " ");
        }
        posmax=str2.find(smax,0);
        posmin=str2.find(smin,0);
        if (posmax>posmin)
        {
            str2.replace(posmax, smax.length(), smin);
            str2.replace(posmin, smin.length(), smax);
        }
        else
        {
            str2.replace(posmin, smin.length(), smax);
            str2.replace(posmax, smax.length(), smin);
        }
        cout<<str2<<endl;
        str2.clear();
        fgets(str,max,fin);
        MIN=254;
        MAX=0;
    }
    fclose(fin);
    fclose(fout);
    system ("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 17:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Чтение строки из файла (C++):

Чтение из файла строки по началу строки или ее части
Всем доброго времени суток! Большая просьба помочь! поступило задание, сделать...

Чтение строки из файла
помогите пожалуйста. как прочесть всю строку из файла?

Строки, чтение из файла
Пытаюсь написать программу по заданию Попытка не пытка, но мыслей нет

Чтение строки из файла
Нужно что бы строка которая вводится пользователем (Vvedite slova)считывалась...

Чтение строки и файла
Программа для чтения строки и записи файла, пожалуйста помоите модуль сдать...

Чтение строки из файла
Как из вводного файла прочитать строку и присвоить её переменной? Заранее...

1
Людвиг Бодмер
356 / 355 / 211
Регистрация: 29.03.2013
Сообщений: 866
Завершенные тесты: 4
24.12.2013, 10:12 #2
Vandervals, а у меня не заканчивает работу после первой строки. Это зависит от структуры входного текстового файла, а именно чем заканчивается последняя строчка: ничем, пробелом или переводом на новую строку. Для вашей программы нужно делать перевод на новую строку(т.е. Enter нажать в конце), тогда должно корректно отрабатывать. Можно попробовать немного по-другому считывать:
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
#include "StdAfx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <iomanip> 
#include <string.h>
#include <string>
#include <ctype.h>
 
using namespace std;
int main()
{
    setlocale (LC_ALL,".1251");
    FILE *fin = fopen("input.txt", "r");
    FILE *fout = fopen("output.txt", "w");
    if (!fin)
    {
        cout<<"Не могу создать входной файл."<<endl;
        system ("pause");
        return 1;
    }
    if (!fout)
    {
        cout<<"Не могу создать выходной файл."<<endl;
        system ("pause");
        return 1;
    }
    const int max=255;
    char *prov1;
    char * str=new char[max];
    int posmax, posmin;
    int MAX=0, MIN=254;
    string str2;
    string smax, smin;
    
    cout<<"Результат выполнения программы:"<<endl;
    while (fgets(str,max,fin))
    {
        str[strlen(str)-1]='\0';
        str2=str;
        prov1=strtok(str," ");
        while (prov1 != NULL)
        {
            if (strlen(prov1)>=MAX)
            {
                smax=prov1;
                MAX=strlen(prov1);
            }
            if (strlen(prov1)<=MIN)
            {
                smin=prov1;
                MIN=strlen(prov1);
            }
            prov1=strtok(NULL, " ");
        }
        posmax=str2.find(smax,0);
        posmin=str2.find(smin,0);
        if (posmax>posmin)
        {
            str2.replace(posmax, smax.length(), smin);
            str2.replace(posmin, smin.length(), smax);
        }
        else
        {
            str2.replace(posmin, smin.length(), smax);
            str2.replace(posmax, smax.length(), smin);
        }
        cout<<str2<<endl;
        str2.clear();
        MIN=254;
        MAX=0;
    }
    fclose(fin);
    fclose(fout);
    system ("pause");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2013, 10:12
Привет! Вот еще темы с решениями:

Чтение из файла и строки
Всем привет, у меня есть проблема со строками и чтением из файла. Предположим в...

Чтение строки из файла
как считать строку(-и) из файла без стринга? по заданию у меня выводит кол-во...

Чтение строки из файла
Помогите пожалйста считать строку из файла #include &quot;stdafx.h&quot;...

Чтение строки из файла
Добрый День! Необходимо считать из файла в стуктуру: 4 Sam forn 2000 ...


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

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

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