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

Ввод-вывод из файла - C++

Восстановить пароль Регистрация
 
Lotus34
5 / 6 / 1
Регистрация: 26.10.2012
Сообщений: 124
22.04.2013, 09:54     Ввод-вывод из файла #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
#include <conio.h>
#include <windows.h>
#include <iostream>
#include <stdio.h>
/*Сформировать файл из целых чисел, вводимых с клавиатуры. Напечатать его.
Переставить компоненты файла так, чтобы сначала шли все компоненты,
являющиеся четными числами, 
а затем – все остальные компоненты.
Вывести на экран новое содержимое файла.
Вспомогательный файл не использовать.
*/
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int ch,c;
     char s [100];
const int N=5;
int mas[N],i;
 
FILE * fp;
if((fp=fopen("laba.txt","w+"))==NULL)
    cout<<"Ошибка открытия";
else
{  
    for(i=0;i<N;i++)
    {
        cout<<"Введите число - ";
        cin>>mas[i];
    }
    for(i=0;i<N;i++)
        fprintf(fp,"%d\n",mas[i]);
 
    fseek(fp,SEEK_CUR,SEEK_SET);
    for(i=0;i<N;i++)
    
        //fread( s ,sizeof(fp),100,fp);
        fscanf(fp,"%d\d",&mas[i]);
        
    
 
    fclose(fp);
}
 
 
 
 
system("pause");
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 09:54     Ввод-вывод из файла
Посмотрите здесь:

Ввод\вывод в файл\из файла C++
Ввод из файла и вывод в файл C++
Ввод\вывод из файла C++
C++ Ввод и вывод из файла
C++ Ввод\вывод файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
22.04.2013, 15:02     Ввод-вывод из файла #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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <sstream>
#include <fstream>
#include <windows.h>
 
/*Сформировать файл из целых чисел, вводимых с клавиатуры. Напечатать его.
Переставить компоненты файла так, чтобы сначала шли все компоненты,
являющиеся четными числами, а затем – все остальные компоненты.
Вывести на экран новое содержимое файла. Вспомогательный файл не использовать.
*/
using namespace std;
 
//Russian in console
char* RUS(char* rusStr)
{ char* res = new char[strlen(rusStr)+1];
  CharToOemA(rusStr,res); 
  return res;
}
 
int main()
{   int cur;
    char s[256];
    
    //файловый поток
    fstream F ("test.txt", fstream::in | fstream::out | fstream::trunc);
    if(!F)
    {   cout<<RUS("Ошибка при работе с файлом");
        cin.get();
        exit(1);
    }
 
    cout<<RUS("Введите ряд целых чисел через пробел. Конец ввода - ENTER\n");
    cin.getline(s,255);
 
    //убираем возможные лишние пробелы и записываем в файл
    istringstream S(s);     //строковый поток
    while(S>>cur)
        F<<cur<<" ";
 
    //выводим на консоль содержимое файла
    cout<<RUS("\nСформирован файл:\n");
    F.seekg (0, F.beg);
    F.getline(s,255);
        cout<<s;
 
    //два раза прокручиваем строку и перезаписываем файл
    F.clear();  S.clear();  //очищаем потоки от EOF
    S.seekg (0, S.beg);
    F.seekg (0, F.beg);
    while(S>>cur)
    {   if(cur%2 == 0)
            F<<cur<<" ";
    }
    S.clear();
    S.seekg (0, S.beg);
    while(S>>cur)
    {   if(cur%2 == 1)
            F<<cur<<" ";
    }
 
    //выводим на консоль то, что получилось
    cout<<RUS("\nУпорядоченный файл:\n");
    F.clear();
    F.seekg (0, F.beg);
    F.getline(s,255);
        cout<<s;
 
    F.close();
    cin.get();
    return 0;
}
Миниатюры
Ввод-вывод из файла  
Lotus34
5 / 6 / 1
Регистрация: 26.10.2012
Сообщений: 124
24.04.2013, 20:28  [ТС]     Ввод-вывод из файла #3
Цитата Сообщение от IrineK Посмотреть сообщение
Задача явно на работу с потоками:

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
#include <iostream>
#include <sstream>
#include <fstream>
#include <windows.h>
 
/*Сформировать файл из целых чисел, вводимых с клавиатуры. Напечатать его.
Переставить компоненты файла так, чтобы сначала шли все компоненты,
являющиеся четными числами, а затем – все остальные компоненты.
Вывести на экран новое содержимое файла. Вспомогательный файл не использовать.
*/
using namespace std;
 
//Russian in console
char* RUS(char* rusStr)
{ char* res = new char[strlen(rusStr)+1];
  CharToOemA(rusStr,res); 
  return res;
}
 
int main()
{   int cur;
    char s[256];
    
    //файловый поток
    fstream F ("test.txt", fstream::in | fstream::out | fstream::trunc);
    if(!F)
    {   cout<<RUS("Ошибка при работе с файлом");
        cin.get();
        exit(1);
    }
 
    cout<<RUS("Введите ряд целых чисел через пробел. Конец ввода - ENTER\n");
    cin.getline(s,255);
 
    //убираем возможные лишние пробелы и записываем в файл
    istringstream S(s);     //строковый поток
    while(S>>cur)
        F<<cur<<" ";
 
    //выводим на консоль содержимое файла
    cout<<RUS("\nСформирован файл:\n");
    F.seekg (0, F.beg);
    F.getline(s,255);
        cout<<s;
 
    //два раза прокручиваем строку и перезаписываем файл
    F.clear();  S.clear();  //очищаем потоки от EOF
    S.seekg (0, S.beg);
    F.seekg (0, F.beg);
    while(S>>cur)
    {   if(cur%2 == 0)
            F<<cur<<" ";
    }
    S.clear();
    S.seekg (0, S.beg);
    while(S>>cur)
    {   if(cur%2 == 1)
            F<<cur<<" ";
    }
 
    //выводим на консоль то, что получилось
    cout<<RUS("\nУпорядоченный файл:\n");
    F.clear();
    F.seekg (0, F.beg);
    F.getline(s,255);
        cout<<s;
 
    F.close();
    cin.get();
    return 0;
}
У вас все так красиво, и работает, но я студент 1 курса и очень много из того, что вы реализовали просто не знаю. Мне просто интересно как выводить из файла функциями попроще, на уровне той, через которую я заношу в поток.
alexSo94
140 / 4 / 1
Регистрация: 24.02.2013
Сообщений: 46
24.04.2013, 20:32     Ввод-вывод из файла #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
43
44
45
46
// 9.   В текстовом файле подсчитать количество строк, которые начинаются и оканчиваются одной и той же буквой, вывести эти строки их количество в новый файл. 
//
 
#include "stdafx.h"
#include <string>
#include <iostream>
#include <fstream>
 
using namespace std;
 
void main ()
{
    setlocale(LC_ALL,"Russian");
    char  filename[255];
    int cnt=0;
    
    cout<<"Введите имя файла ";
    cin>>filename;
    ifstream inFile(filename);
    if (inFile) 
    {
        ofstream outFile;
        outFile.open("D:\\result.txt"); 
        string s1; 
        while(!inFile.eof())  
        {
            
            inFile>>s1;
            cout<<s1<<endl;
            if(s1!="" && s1[0]==s1[s1.length()-1])
            {
              cnt++;
              outFile<<s1;
              outFile<<'\n';         
            }
            s1="";
            
        }
                cout<<"Количество совпадений" <<"="<<cnt<<endl;
                inFile.close();
                outFile.close ();
                cout<<"Файл записан.";
    }
                else cout<<"Не существет такого файла!";
    
}
Lotus34
5 / 6 / 1
Регистрация: 26.10.2012
Сообщений: 124
24.04.2013, 22:46  [ТС]     Ввод-вывод из файла #5
Цитата Сообщение от alexSo94 Посмотреть сообщение
Вот тебе пример моей прошлой задачи может пригодиться
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
// 9.   В текстовом файле подсчитать количество строк, которые начинаются и оканчиваются одной и той же буквой, вывести эти строки их количество в новый файл. 
//
 
#include "stdafx.h"
#include <string>
#include <iostream>
#include <fstream>
 
using namespace std;
 
void main ()
{
    setlocale(LC_ALL,"Russian");
    char  filename[255];
    int cnt=0;
    
    cout<<"Введите имя файла ";
    cin>>filename;
    ifstream inFile(filename);
    if (inFile) 
    {
        ofstream outFile;
        outFile.open("D:\\result.txt"); 
        string s1; 
        while(!inFile.eof())  
        {
            
            inFile>>s1;
            cout<<s1<<endl;
            if(s1!="" && s1[0]==s1[s1.length()-1])
            {
              cnt++;
              outFile<<s1;
              outFile<<'\n';         
            }
            s1="";
            
        }
                cout<<"Количество совпадений" <<"="<<cnt<<endl;
                inFile.close();
                outFile.close ();
                cout<<"Файл записан.";
    }
                else cout<<"Не существет такого файла!";
    
}
Суть более чем ясна,но тут нет как такогого вывода в консоль из файла , а у меня весь косяк заключается в этом=(
Yandex
Объявления
24.04.2013, 22:46     Ввод-вывод из файла
Ответ Создать тему
Опции темы

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