Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 05:01   #1
Basic_
 
Регистрация: 01.04.2011
Сообщений: 3
Вопрос Чтение из файла разных строк

Уважаемы программисты, помогите разобраться пожалуйста. Есть текстовый файл, который содержит строки с цифрами и символами:

222
444
99999
ааа
ннн
99999

Нужно посчитать количество строк с девятками. Если бы в файле содержались только строки с цифрами, то тут все понятно:

Код:
#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;


int main(int argc, char** argv) {
   ifstream in("filedata.txt");
   int intstrok;
   int schet = 0;
   while (in >> intstrok)
   {
       if (intstrok == 99999) {
           schet++;
       }
   }
   cout << "schet = " << schet << endl;
   in.close();
   return 0;
}
При выполнении этого кода, когда встречается строка с символами, цикл завершается. Я так понял причина в том, что символы читаются из файла по другому:
Код:
...
FILE *filedata;
char stroka[100];
filedata=fopen("filedata.txt", "a+");
fscanf(file, "%s", stroka);
...
Подскажите пожалуйста можно ли это все объединить, чтобы при чтении строки с символами цикл не прерывался, а пропускал ее и читал строки с цифрами дальше. Если можно на примере. Не дайте умереть в неведении!


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.05.2011 в 11:18.
Basic_ вне форума Ответить с цитированием
Старый 09.05.2011, 06:39   #2
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
    ifstream filedata("filedata.txt");
    string str;
    int count=0;
    while(filedata)
    {
         filedata>>str;
         if(str=="99999") count++;
         str.clear();
    }
    cout<<count<<endl;
}
Hemul вне форума Ответить с цитированием
Старый 09.05.2011, 07:23   #3
Basic_
 
Регистрация: 01.04.2011
Сообщений: 3
По умолчанию

Hemul большое спасибо!
Я понял в чем моя ошибка: нужно читать все строки как символьные, а не разделять их на int и char.
Basic_ вне форума Ответить с цитированием
Старый 05.07.2011, 15:00   #4
yaku
Новичок
Джуниор
 
Регистрация: 05.07.2011
Сообщений: 1
По умолчанию

Доброго времени суток. Прошу помощи разобраться с аналогичной проблемой. стоит задача написать програмку которая могла бы считывать данные из TXTшных файлов , которые содержат в себе набор чисел записаных в столбик и записывать из в другой, в определенном порядке. известно что запись в определенной строке соответсвует определенному параметру, хочу сделать так чтобы считывались данные из файлов и выводились в текстовом документе по шаблону который привожу ниже.

DataT_1 time_1 cps_1 Ubat_1 UHV_1 Uhv_1 U3v_1 Tcwo_1 Tbat_1 Tpcb_1
.........
DataT_n time_n cps_n Ubat_n UHV_n Uhv_n U3v_n Tcwo_n Tbat_n Tpcb_n
Пока практикуюсь с 2 файлами, а как быть с большим количеством это вопрос который буду решать. Думал чтобы менять названия файлов на числа от 1 до N, а потом организовать в цикле считывание из каждого, пока нехватает навыков.
Если есть идеи буду признателен. Ниже код программы который собирал по частям.
!!!!! я новичок поэтому жду критики и адекватных коментариев

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];
char ar_cps[200];
char ar_Ubat[200];
char ar_UHV[200];
char ar_Uhv[200];
char ar_U3_3[200];
char ar_Tcwo[200];
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;
int N_cps=18;
int N_Ubat=20;
int N_UHV=23;
int N_Uhv=35;
int N_U3_3=47;
int N_Tcwo=60;
int N_Тbat=61;
int N_Тpcb=62;
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++)//посимвольно выводим в файл по столбикам
{
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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение новых строк из файла Delphinchik PHP 5 27.11.2010 22:49
Чтение заданного кол-ва строк из файла, С++ Remedy Помощь студентам 7 21.11.2010 22:44
Чтение опеределенных строк из файла Dennis777 Помощь студентам 6 14.11.2009 21:59
Чтение ASCII строк из PE файла Flippp Общие вопросы C/C++ 3 19.08.2009 12:30
Чтение строк из файла (С++) counter Помощь студентам 2 05.11.2008 02:02