Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 13.01.2010
Сообщений: 35

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

06.01.2012, 20:18. Показов 2719. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
уважаемые программисты подскажите как поступить: есть файл из которого нужно считать содержимое, которое выглядит следующим образом

Code
1
2
3
Точка 1 2 7
Точка 9 4 6
Точка 59 12 7
и заполнить массив

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
  
string name = "test01";      
private void button1_Click(object sender, EventArgs e)
        {
            string strline;
            string[] StrArr;
            char differ = ' ';
            StreamReader sr = new StreamReader(name);
            strline = sr.ReadLine();
            StrArr = strline.Split(differ);
           
 if (StrArr[1] == "Точка")
            {
                int NumberOfPOints = ......;    // получить кол-во точек из файла
                POintsArray = new POints[NumberOfPOints];//создать масссив размером NumberOfPOints 
                
               //заполнить этот массив значениями из файла ну что-то типа такого
 
              // POintsArray[0] = new POints(1, 2, 7);
              //  POintsArray[1] = new POints(9,4, 6);
               //  POintsArray[2] = new POints(59, 12, 7);
 
                 ..........
 
                strline = sr.ReadLine();
            
            }
            sr.Close();
        }
как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2012, 20:18
Ответы с готовыми решениями:

Сохранение данных в файл с определенной структурой
Здравствуйте. Сразу к делу. Нужно сохранять текстовые данные в файл с определенной структурой. Например есть label1 ...

Считывание определенной строки из файла
Добрый день! Есть файл содержащие например такие строки: program namespase kalk=kod system=try нужно найти строку в которой...

Считывание файла с определенной позиции
Здравствуйте, имеется файл, содержащий в себе строки и столбцы с буквами и цифрами, необходимо считать с определенной стартовой точки в...

4
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
06.01.2012, 20:23
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        var points = from point in System.IO.File.ReadAllLines(@"D:\points.txt")
                     let splits = point.Split(new char[] { ' ' }, 
                                                 StringSplitOptions.RemoveEmptyEntries)
                     select new { X = int.Parse(splits[1]),
                                  Y = int.Parse(splits[2]),
                                  Z = int.Parse(splits[3])  };
        foreach (var point in points)
            Console.WriteLine("X: {0}, Y: {1}, Z: {2}", point.X, point.Y, point.Z);
        Console.ReadKey(true);
    }
}
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
using System;
using System.Collections.Generic;
using System.IO;
 
struct Point3
{
    public int X
    {
        get;
        set;
    }
    public int Y
    {
        get;
        set;
    }
    public int Z
    {
        get;
        set;
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        StreamReader reader = new StreamReader(@"D:\points.txt");
        List<Point3> points = new List<Point3>();
        string s = string.Empty;
        while ((s = reader.ReadLine()) != null)
        {
            string[] splits = s.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries);
            points.Add(new Point3
            {
                X = int.Parse(splits[1]),
                Y = int.Parse(splits[2]),
                Z = int.Parse(splits[3])
            });
        }
        reader.Close();
        foreach (Point3 point in points)
            Console.WriteLine("X: {0}, Y: {1}, Z: {2}", point.X, point.Y, point.Z);
        Console.ReadKey(true);
    }
}
1
0 / 0 / 0
Регистрация: 13.01.2010
Сообщений: 35
06.01.2012, 20:33  [ТС]
а если у меня не 3 точки, а их может быть произвольное кол-во?
0
 Аватар для KarmaMaker
91 / 90 / 11
Регистрация: 09.12.2011
Сообщений: 233
06.01.2012, 22:57
а если у меня не 3 точки, а их может быть произвольное кол-во?
Используй XML

Добавлено через 2 минуты
Да, и кстати количество точек в приведенном выше коде может быть произвольным.
0
0 / 0 / 0
Регистрация: 13.01.2010
Сообщений: 35
16.01.2012, 00:56  [ТС]
имелось ввиду ситуация, если файл выглядит не так

Цитата Сообщение от Villiya Посмотреть сообщение
Точка 1 2 7
Точка 9 4 6
Точка 59 12 7
а допустим
Code
1
2
3
Точка 1 2 7
Точка 9 4 6 8 6 1
Точка 59 12 7 6
и как быть с ситуацией, если в файле еще и другие обекты
Code
1
2
3
4
5
6
7
Точка 1 2 7
Точка 9 4 6
Окружность 25 15 10 6
Точка 59 12 7
Окружность 2 7 10 15 10
Квадрат 2 2 2 4 4 4
Квадрат 26 57 48 5 7
как в такой ситуации "разделить" точки, окружности и квадраты по своим массивам и заполнить эти массивы как-то так:
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
int NumberOfPOints = ......;    // получить кол-во точек из файла
                POintsArray = new POints[NumberOfPOints];//создать масссив размером NumberOfPOints 
                
               //заполнить этот массив значениями из файла ну что-то типа такого
 
              // POintsArray[0] = new POints(1, 2, 7);
              //  POintsArray[1] = new POints(9,4, 6);
               //  POintsArray[2] = new POints(59, 12, 7);
....
int NumberOfСircle = ......;
СircleArray = new Сircle[NumberOfСircle];//создать масссив размером NumberOfPOints 
                
               //заполнить этот массив значениями из файла ну что-то типа такого
 
              // СircleArray[0] = new Сircle(25, 15, 10, 6);
              //  СircleArray[1] = new Сircle(2, 7, 10, 15, 10);
....
int NumberOfRects = ......;    // получить кол-во точек из файла
                Rects Array = new Rects [NumberOfRects ];//создать масссив размером NumberOfPOints 
                
               //заполнить этот массив значениями из файла ну что-то типа такого
 
              // RectsArray[0] = new Rects (2, 2, 2, 4, 4, 4);
              //  RectsArray[1] = new Rects (26, 57, 48, 5, 7);
              
....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2012, 00:56
Помогаю со студенческими работами здесь

Считывание определенной строки текстового файла
Как с текстового файла считать строку с определенным номером? Нужно сместить файловый указатель? Подскажите какой функцией

Считывание одной определенной строки из файла
Недавно задался вопросом, а как считать всего одну строку из файла. Файл: 1 2 3 4 5 Как считать только допусим 3 строку?

Считывание файла начиная с определенной (по порядку) строки
Привет, python'а не знаю, поэтому задаю такие вопросы. Решение в лоб я знаю - прочитать (проигнорировать) первые N строк ф-цией readline(),...

Запрос данных из файла. Проблема в открывании файла и считывание из него данных
Не понимаю что не так, программа не хочет открывать файл... Пробовал и перемещать его, и использовать другие команды для его вызова... (Щас...

Как подключится к бд с определенной структурой?
Чтоб нельзя было подключить бд не подходящую к предложению по структуре(таблици триггеры хран. проц.) InterBase


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru