Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите!!! Считать из файла и разбить на массивы 
V
    Опции темы
Katshooter
  Дата 1.12.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



Привет всем! очень срочно нужна помощь!
вобщем задача такая:
есть файл вида:
aaxxx yyy zzzz
aaxxxx yy zzz
aa xx yyy zzz

где x,y,z - это цифры
       a - буквы 


нужно считать и разбить в массив структур:
typedef struct
{
int x;
double y;
double z;
}

как это реализовать?
PM MAIL   Вверх
Rififi
Дата 1.12.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 3
Всего: 36



- читаешь построчно из файла, пока есть что читать (fgets, std::getline)
- ищешь до первого пробела или буквы - получаешь первое слово
- переводишь его в целое число (atoi)
- далее или в цикле вручную просматриваешь оставшуюся часть строки пока не найден пробел - получаем очередное слово, или через функцию strtok
- переводишь строку в вещественное число (atof)


Это сообщение отредактировал(а) Rififi - 1.12.2008, 19:42
PM MAIL   Вверх
Katshooter
Дата 1.12.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



о классно, а пример можно smile 
PM MAIL   Вверх
system
Дата 2.12.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.5.2008

Репутация: 1
Всего: 2



Код

#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
const size_t word_len = 256;
struct block {
 int x;
 double y;
 double z;
};
int main() {
 std::ifstream infile( "test.txt" );
 if( !infile ) return 0;

 std::string instring;
 block tmp;
 char word[ word_len ];
 std::vector< block > blocks; //Массив
 while( std::getline( infile, instring ) )
 {
        std::string::size_type fp = instring.find_first_of( "0123456789" );
        instring.insert( fp, " " );
        sscanf( instring.c_str(), "%s %d %lf %lf", &word, &tmp.x, &tmp.y, &tmp.z );
     //   std::cout << word << " " << tmp.x << " " << tmp.y << " " << tmp.z << std::endl;
        blocks.push_back( tmp );
 }
}


PM MAIL   Вверх
Katshooter
Дата 2.12.2008, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



Забыла сказать. код должен быть на СИ!
Но спасибо, помогли!
Вобщем у меня вот что получилось и впринципе работает:

Код

typedef struct
{
    unsigned int index;
    float min;
    float max;
}min_max  ;

int stringdelmin (char *a,int pos,int len)
{
    int i;
    for(i=pos;i<32-len;i++)
    {
        a[i]=a[i+len-1];
    }
    a[i]=0;
    return i;
}
    
F=fopen("lalala.cfg","r+");
for(i1=0;i1<2048;i1++)
{
    temp[i1]=malloc(32);
}
i1=0;
while(fgetc(F)!=EOF)
{
    fgets(temp[i1],32,F);
    stringdelmin(temp[i1],0,2);
    sscanf(temp[i1],"%d %f %f",&MinMax[i1].index, &MinMax[i1].min,&MinMax[i1].max);
    i1++;
}




 smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.