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

Считывание данных из файла и их обработка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
19.10.2009, 22:54     Считывание данных из файла и их обработка #1
Такой темы не нашел.
Итак. Результат функции записан в файл (предполагается всегда двузначное число).
Нужно: сложить 1-ый и 2-ой символы; перезаписать результат в этот же файл; повторить операцию с новыми данными еще раз.
Такой функции как мат. действия при считывании из файла не нашел.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,297
20.10.2009, 00:57     Считывание данных из файла и их обработка #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
#include <stdio.h>
using namespace std;
 
int main() {
 FILE* f= fopen ("rez.cc", "rb");
 
 int simvol [2];
 
 if (!f) {
  printf ("fail rez.cc ne otkrit");
 }
 else {
  simvol [0]= fgetc (f);
  simvol [1]= fgetc (f);
  simvol [0]= simvol [0]+ simvol [1]- 96; 
  if (simvol [0]> 9) 
   simvol [0]= simvol [0]%10+ 1;
  fclose (f);
  f= fopen ("rez.cc", "wb");
  if (!f) {
   printf ("fail rez.cc ne otkrit");
  }
  fputc ((unsigned char)simvol [0], f);  
  fclose (f);
 }
 
 getchar ();
 return 0;
}
Только сразу говорю- в результате в файле будет символ от 1 до 9.
Привет
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
20.10.2009, 18:32  [ТС]     Считывание данных из файла и их обработка #3
Бальшое чилавечискае ПАСИБА!
Мне одно как раз и нужно)

Добавлено через 31 минуту
Блин.. че то все поперепутал. Ниче не пойму. Теперь у меня в результате -98
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,297
20.10.2009, 18:41     Считывание данных из файла и их обработка #4
Это потому, что ты не можешь считать с файла.
Поэтому каждый раз считывется -1 и -1 Потом они складываются, потом отнимается 96 и получается -98.
Для начала: сперва режим открытия именно rb, потом закрываешь файл, потом именно wb

Трассируй, отлаживай. Умеешь?
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
20.10.2009, 18:46  [ТС]     Считывание данных из файла и их обработка #5
Нет, конечно. Ладно. Сам подумаю
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,297
20.10.2009, 18:52     Считывание данных из файла и их обработка #6
Цитата Сообщение от Poet Посмотреть сообщение
Нет, конечно. Ладно. Сам подумаю
Это верно.
Отследи, какие имено значения считываются из файла. Для этого ставь в прогу после считывания такой код
C++
1
2
3
simvol [0]= fgetc (f);
  simvol [1]= fgetc (f);
  printf ("simvol [0]= %d       simvol [1]= %d\n",simvol [0], simvol [1]);
Вот всё в таком духе.
Так приближайся к тому месту где ошибка в коде.
Это и есть отладка.
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
20.10.2009, 18:55  [ТС]     Считывание данных из файла и их обработка #7
А если ошибки нет?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,297
20.10.2009, 18:59     Считывание данных из файла и их обработка #8
Ситинтаксической может и не быть.
Но если прога работает не так как предполагается, ошибка есть по определению.

Другое дело- как эту ошибку назвать.
Промах ли, недочёт ли, программисткая ошибка или ещё как-то.
Но нам по хер на названия.
Работай давай.
yaku
 Аватар для yaku
1 / 1 / 0
Регистрация: 30.05.2009
Сообщений: 25
25.05.2011, 13:52     Считывание данных из файла и их обработка #9
наконец нашел нужную тему )) как начинающий обращаюсь ко всем знатокам. стоит задача написать програмку которая могла бы считывать данные из файлов двух типов (расширение res и spe) которые содержат в себе набор чисел записаных в столбик и записывать в другой, текстовый. известно что запись в определенной строке соответсвует определенному параметру, хочу сделать так чтобы считывались данные из файлов *.res и *.spe и выводились в текстовом документе по шаблону который привожу ниже.

DataT_1 time_1 cps_1 Ubat_1 UHV_1 Uhv_1 U3v_1 Tcwo_1 Tbat_1 Tpcb_1
DataT_2 time_2 cps_2 Ubat_2 UHV_2 Uhv_2 U3v_2 Tcwo_2 Tbat_2 Tpcb_2
.........
.........
.........
DataT_n time_n cps_n Ubat_n UHV_n Uhv_n U3v_n Tcwo_n Tbat_n Tpcb_n

Пока практикуюсь с 2 файлами, а как быть с большим количеством ( больше 100 шт) это вопрос который буду решать. Думал о том чтобы менять названия файлов на числа от 1 до N, а потом организовать в цикле считывание из каждого, пока нехватает навыков.
Если у Вас есть идеи как это реализовать буд признателен. ниже код программы который собирал по частям.
!!!!!!!!!! я новичок поэтому жду критики и адекватных коментариев

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
91
92
93
94
95
96
97
98
99
100
#include "stdafx.h"
#include <iostream> 
#include <fstream> 
using std::string;
using namespace std;
void main()
{
    char ar_1[200];
    char ar_2[200];
    char ar_time[200];// масив для записи длительности измерения
    char ar_DataT[200];// масив для записи времени измерения
    char ar_Z[200];// масив для записи Z
    char ar_cps[200];// масив для записи счета
    char ar_Ubat[200];// масив для записи напряжения батареи
    char ar_UHV[200];// масив для записи напряжения питания блока
    char ar_Uhv[200];// масив для записи напряжения питания высоковольтника
    char ar_U3_3[200];// масив для записи напряжения 3,3В
    char ar_Tcwo[200];// масив для записи температуры cwo
    char ar_Тbat[200];// масив для записи температуры батареи
    char ar_Тpcb[200];// масив для записи температуры платы
    char a;
 
    int i=0;
 
    //ниже записываем номера строк в которых содержится необходимая информация
    int N_time=12;// строка длительности измерения
    int N_DataT=15;// строка времени измерения
    int N_Z=17;// строка Z
    int N_cps=18;// строка счета
    int N_Ubat=20;// строка напряжения батареи
    int N_UHV=23;// строка напряжения питания блока
    int N_Uhv=35;// строка напряжения питания высоковольтника
    int N_U3_3=47;// строка напряжения 3,3В
    int N_Tcwo=60;// строка температура cwo
    int N_Тbat=61;// строка температура батареи
    int N_Тpcb=62;// строка температура платы
        // файлы с индексом spe содержат данные о наборе, температуре и напряжениях в контрольных точках
        // файлы с индексом data содержат время, длительность измериения, cps  
        ifstream in_1("c:\1spe.txt");
        ifstream in_2("c:\1data.txt");
        ofstream out("c:\5.txt", ios::app);
 
        for(int i=0; i<100 ;i++)
        {
    ar_1[200]=0;
    ar_2[200]=0;
    ar_time [200]=0;
    ar_DataT[200]=0;
    ar_Z[200]=0;
    ar_cps[200]=0;
    ar_Ubat[200]=0;
    ar_UHV[200]=0;
    ar_Uhv[200]=0; 
    ar_U3_3[200]=0;
    ar_Tcwo[200]=0;
    ar_Тbat[200]=0;
    ar_Тpcb[200]=0;
        }
// зная номера нужных мне строк я могу выборочно их записывать использую промежуточный масив    
        for(int i=0; i<200 ;i++)//посимвольно считываем из файла 1spe.txt 
        {
                in_1>>ar_1[i];//прогоняем все строки через буферный 
                        //масив и выбираем строки с параметрами измерения,температура и напряжение
                                //нужные значения записую использую критерий отбора поскольку не все строки содержат полезную информацю
        if (i=N_UHV); ar_1[i]>>ar_Uhv[i]; // записали нужные данные о напряжения питания блока
           
        if (i=N_Uhv); ar_1[i]>>ar_Uhv[i]; // записали нужные данные о напряжении питания высоковольтника
           
        if  (i=N_Ubat); ar_1[i]>>ar_Ubat[i]; // записали нужные данные о напряжении батареи
           
        if (i= N_U3_3); ar_1[i]>>ar_U3_3[i]; // записали нужные данные о напряжении 3,3В
           
        if (i=N_Tcwo); ar_1[i]>>ar_Tcwo[i]; // записали нужные данные о температуре cwo        
        if (i=N_Тbat); ar_1[i]>>ar_Тbat[i]; // записали нужные данные о температуре батареи
           
        if (i=N_Тpcb);ar_1[i]>>ar_Тpcb[i]; // записали нужные данные о температуре платы
        }   
       
        for(i=0; i<200 ;i++)//посимвольно считываем строки из файла 1data.txt
        {
           in_2>>ar_2[i];//прогоняем все строки через буферный 
                        //масив и выбираем строки с датой, длительностью, Z
        if (i=N_time) ar_2[i]>>ar_time[i];// записали нужные данные о длительности измерения
 
        if (i=N_DataT) ar_2[i]>>ar_time[i];// записали нужные данные о времени измерения
           
        if (i=N_Z) ar_2[i]>>ar_Z[i]; // записали нужные данные о Z 
           
        if (i=N_cps) ar_2[i]>>ar_cps[i]; // записали нужные данные о счете
           
        }
        for(int j=0; j<200; j++)//посимвольно выводим в файла 5 по столбикам
        {
                out<<ar_time[j]<<' '<<ar_DataT[i]<<' '<<ar_Z[j]<<' '<<ar_cps[j]<<' '<<ar_Ubat[j]<<' '<<ar_UHV[j]<<' '<<ar_UHV[j]<<' '<<ar_Uhv[j]<<' '<<' '<<ar_U3_3[j]<<' '<<ar_Tcwo[j]<<' '<<ar_Тbat[j]<<' '<<ar_Тpcb[j]<<' '<<endl;
        }
       
    in_1.close();//закрываем потоки
        in_2.close();
        out.close(); 
}
 Комментарий модератора 
Используйте теги форматирования кода!
yaku
 Аватар для yaku
1 / 1 / 0
Регистрация: 30.05.2009
Сообщений: 25
06.06.2011, 12:25     Считывание данных из файла и их обработка #10
люди !!!!!!! куда мне писать? кто знает где искать решение, подскажите, может есть подходящяя тема на форуме?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 12:42     Считывание данных из файла и их обработка
Еще ссылки по теме:

Считывание данных из файла в структуру C++
Считывание данных с файла C++
C++ Считывание данных из файла
C++ Считывание данных из файла
C++ Считывание данных из файла

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

Или воспользуйтесь поиском по форуму:
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
06.06.2011, 12:42     Считывание данных из файла и их обработка #11
Poet, так пойдет?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<conio.h> 
main()
{
int k,i,n,s=0; 
  char fname[]="c:\\number.txt";
  clrscr(); 
  FILE *fp; 
  fp = fopen(fname,"w"); 
  printf("Dannie budut vvedeni v file - %s\n",fname);
  puts("Vvedite chisla i nazhmite ENTER!\n");
    {
     scanf("%d %d",&k,&n);
    s=k+n;
     fprintf(fp,"%d + %d = %d",k,n,s);
    } 
   fclose(fp);
printf("Vvedennie dannie zapisani v file %s\n",fname);
getch();
}
Yandex
Объявления
06.06.2011, 12:42     Считывание данных из файла и их обработка
Ответ Создать тему
Опции темы

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