1 / 1 / 0
Регистрация: 14.11.2014
Сообщений: 47
1

Запись массива в файл и чтение из файла

05.04.2015, 12:31. Показов 5429. Ответов 11
Метки нет (Все метки)

Программа массив генерирует все ок, а вот с записью массива и чтением его - у меня проблемы. Ругается на f и buf
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
//main.cpp
 
#include<cmath>
#include<iostream>
#include<cstdio>
#include<conio.h>
#include<fstream>
#include"Lab08_methods.h"
using namespace std;
int main()
{
 
    while (1)
    {
        cout << "Generate Array[1]: \n ";
        cout << "Save Array to a new file [2] \n";
        cout << "Open Array to the screen [3] \n";
        cout << "Quit [4] \n";
        cout << "Make your choise please: ";
        char Choise;
        cin >> Choise;
        switch (Choise)
        {
        case'1':
            ArrayGenerator();
            break;
        case'2':
            ChangingContent();
            break;
        case'3':
            ConsiderTheValue();
            break;
        case'4':
            cout << "Thank you for using this program!\n";
            system ("pause");
            return 0; 
        default:
            cout << "Incorrect choise\n";
        }
    }
    _getch();
    return 0;
}
а вот библиотека с функциями:

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
//Lab08_methods.h
#ifndef LAB08_METHODS_H
#define LAB08_METHODS_H
#endif
int Array[20];
 
#include<iostream>
 
using namespace std;
 
    void ArrayGenerator()
    {
        for (int i = 0; i < sizeof(Array); i++)
            Array[i] = rand() % 101;
        printf("array generated!\n");
    }
 
    void ChangingContent()
    {
        fopen("test.txt", "w");
        for (int i = 0; i < sizeof(Array); i++) fprintf(f, " %d", buf[i]);
        fclose(f);
        
    }
 
 
    int ConsiderTheValue()
    {
        fopen("test.txt", "r");
        for (int i = 0; i < sizeof(Array); i++) fscanf(f, " %d",  buf + i);
        fclose(f);
        return 0;
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2015, 12:31
Ответы с готовыми решениями:

Запись массива в файл/чтение из файла
1) ввести с клавиатуры матрицу ( размером 4*4 или 5*5) и записать в файл; 2) обр. оерация- считать...

Чтение массива из файла, его преобразование и запись в другой файл
Всем привет. Есть вот такой код: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;fstream&gt;...

Запись в файл, чтение из файла
В общем, неделю назад мне помогли на этом форуме сделать программу. И все прекрасно работает на...

Чтение из файла, запись в файл
Тут такая у меня проблема. 1) Не работает цикл в майне. Как его правильно организовать? 2) И,...

11
Модератор
Эксперт С++
12771 / 10227 / 6148
Регистрация: 18.12.2011
Сообщений: 27,392
05.04.2015, 13:05 2
Лучший ответ Сообщение было отмечено DrTeemo как решение

Решение

C++
1
2
3
4
5
6
7
8
void ChangingContent(int* buf, int N)
 {
        FILE f=fopen("test.txt", "w");
        for (int i = 0; i < N; i++) 
            fprintf(f, " %d\n", buf[i]);
        fclose(f);
        
 }
int Array[20]; перенесите в main
Вызов функции
C++
1
ChangingContent(Array, 20);
И посмотрите вот это:
Образцы (шаблоны) программ для типовых задач
1
1 / 1 / 0
Регистрация: 14.11.2014
Сообщений: 47
05.04.2015, 13:17  [ТС] 3
вот что получается:
Миниатюры
Запись массива в файл и чтение из файла  
0
1 / 1 / 0
Регистрация: 14.11.2014
Сообщений: 47
05.04.2015, 13:38  [ТС] 4
А вот что после переноса
C++
1
int Array[20];
в main
Миниатюры
Запись массива в файл и чтение из файла  
0
1 / 1 / 0
Регистрация: 14.11.2014
Сообщений: 47
05.04.2015, 17:10  [ТС] 5
zss, так вы не подскажете в чем заключается трабл?
0
Модератор
Эксперт С++
12771 / 10227 / 6148
Регистрация: 18.12.2011
Сообщений: 27,392
05.04.2015, 17:32 6
Лучший ответ Сообщение было отмечено DrTeemo как решение

Решение

Пардон, FILE f=fopen("test.txt", "w");
надо
C++
1
 FILE* f=fopen("test.txt", "w");
Работа с FILE - это Сишные функции.
А Вы тему разместили в разделе С++, не обессудьте!

Добавлено через 1 минуту
И оформите ВСЕ функции в таком стиле, а не только ту, которую я поправил.
Я что, зря давал Вам ссылку
Образцы (шаблоны) программ для типовых задач
????
1
1 / 1 / 0
Регистрация: 14.11.2014
Сообщений: 47
05.04.2015, 19:13  [ТС] 7
zss, Ну не зря, вроде-бы оформил, и нашел ошибку в вашем коде, где в заполнении массива случайными числами написано кфтв вместо положенного rand, тему же разместил в том разделе на языке которого я пишу программы (пытаюсь) а функцию FILE нам преподаватель преподнес и обьяснил как функцию С++. Простите за то что отнимаю ваше время, подскажите что делать с этими ошибками?
две последние относятся к:
C++
1
2
3
case'1':
    ArrayGenerator();
break;
Миниатюры
Запись массива в файл и чтение из файла   Запись массива в файл и чтение из файла  
0
Модератор
Эксперт С++
12771 / 10227 / 6148
Регистрация: 18.12.2011
Сообщений: 27,392
05.04.2015, 19:36 8
Лучший ответ Сообщение было отмечено DrTeemo как решение

Решение

Цитата Сообщение от DrTeemo Посмотреть сообщение
ArrayGenerator();
C++
1
ArrayGenerator(Array,20);
1
1 / 1 / 0
Регистрация: 14.11.2014
Сообщений: 47
05.04.2015, 19:38  [ТС] 9
zss, Благодарю, а с необьявленным идентификатором что делать?
0
Модератор
Эксперт С++
12771 / 10227 / 6148
Регистрация: 18.12.2011
Сообщений: 27,392
05.04.2015, 19:40 10
Лучший ответ Сообщение было отмечено DrTeemo как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    void ArrayGenerator(int* Array,int n)
    {
        for (int i = 0; i < n; i++)
            Array[i] = rand() % 101;
        printf("array generated!\n");
    }
 
    void ChangingContent(int* Array,int n)
    {
        fopen("test.txt", "w");
        for (int i = 0; i <n; i++) fprintf(f, " %d", buf[i]);
        fclose(f);
        
    }
 
 
    int ConsiderTheValue(int* Array,int n)
    {
        fopen("test.txt", "r");
        for (int i = 0; i < n; i++) fscanf(f, " %d",  Array + i);
        fclose(f);
        return 0;
    }
Добавлено через 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
#include<iostream>
#include<conio.h>
#include"Lab08_methods.h"
using namespace std;
int main()
{
   int Array[20];
    while (1)
    {
        cout << "Generate Array[1]: \n ";
        cout << "Save Array to a new file [2] \n";
        cout << "Open Array to the screen [3] \n";
        cout << "Quit [4] \n";
        cout << "Make your choise please: ";
        char Choise;
        cin >> Choise;
        switch (Choise)
        {
        case'1':
            ArrayGenerator(Array,20);
            break;
        case'2':
            ChangingContent(Array,20);
            break;
        case'3':
            ConsiderTheValue(Array,20);
            break;
        case'4':
            cout << "Thank you for using this program!\n";
            system ("pause");
            return 0; 
        default:
            cout << "Incorrect choise\n";
        }
    }
    _getch();
    return 0;
}
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16842 / 6720 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
05.04.2015, 19:56 11
Цитата Сообщение от zss Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void ChangingContent(int* Array,int n)
    {
        fopen("test.txt", "w");
        for (int i = 0; i <n; i++) fprintf(f, " %d", buf[i]);
        fclose(f);
        
    }
 
 
    int ConsiderTheValue(int* Array,int n)
    {
        fopen("test.txt", "r");
        for (int i = 0; i < n; i++) fscanf(f, " %d",  Array + i);
        fclose(f);
        return 0;
    }
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void ChangingContent(int* Array,int n)
    {
        FILE *f = fopen("test.txt", "w");
        for (int i = 0; i <n; i++) fprintf(f, " %d", Array[i]);
        fclose(f);
        
    }
 
 
    int ConsiderTheValue(int* Array,int n)
    {
        FILE *f = fopen("test.txt", "r");
        for (int i = 0; i < n; i++) fscanf(f, " %d",  Array + i);
        fclose(f);
        return 0;
    }

Не по теме:

А вообще, имхо, лучше использовать какой-то один стиль. А то взять хотя бы fprintf/fscanf - здесь так, там так..
Либо &Array[i]/Array[i], либо (Array + i)/*(Array + i), тогда уж..

1
1 / 1 / 0
Регистрация: 14.11.2014
Сообщений: 47
05.04.2015, 23:28  [ТС] 12
KOPOJI, Учту) не подскажете, как из этого фрагмента кода (открытие файла) массив вывести на экран?
C++
1
2
3
4
5
6
7
8
9
    int ConsiderTheValue(int* Array, int N)
    {
        FILE* f = fopen("test.txt", "r");
        for (int i = 0; i < N; i++) 
            fscanf(f, " %d", Array + i);
        printf("\nArray is stored in the file! \n");
        fclose(f);
        return 0;
    }
Добавлено через 2 часа 44 минуты
P.S. уже не нужно!

Всем огромное спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2015, 23:28
Помогаю со студенческими работами здесь

Чтение из файла и запись в файл
всем привет! нужно написать программу, которая читает строку из файла. если слово содержит &quot;*&quot;, то...

Чтение из файла и запись в файл
Создайте текстовый файл целых чисел (значения вводятся с клавиатуры). Проанализировав в программе...

Запись в файл и чтение из файла
Подскажите, пожалуйста, почему в &quot;прочитанном&quot; последнее число дублируется? В чем ошибка? #include...

Чтение из файла/Запись в файл
Приветствую всех! Понимаю что тема заезженная вдоль и поперек, но помощь мне нужна срочно! Мне...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru