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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 118
#1

Формирование массива структур из строки - C++

12.05.2011, 20:43. Просмотров 406. Ответов 5
Метки нет (Все метки)

люди добрые) посмотрите, пожалуйста, цикл... Он разбирает фай на структуру..
Файл выглядит так
el1;el2;el3
el1;el2;el3
el1;el2;el3
почему-то он не воспринимает проверку на символ переноса строки в основном цикле..
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
do
    {
        for (c=c_buf; buffer[c] != '\r\n'; c++)
        {
            c--;
            if (buffer[c] == ';') k++;
            c++;
            switch (k)
            {
            case 0:
                for (tmp=0; buffer[c] != ';'; tmp++)
                {
                    a[i].F[tmp] = buffer[c];
                    c++;
                }
                a[i].F[tmp++] = '\0';
                break;
            case 1:
                for (tmp=0; buffer[c] != ';'; tmp++)
                {
                    a[i].I[tmp] = buffer[c];
                    c++;
                }
                a[i].I[tmp++] = '\0';
                break;
            case 2:
                for (tmp=0; buffer[c] != '\n'; tmp++)
                {
                    a[i].O[tmp] = buffer[c];
                    c++;
                }
                a[i].O[tmp++] = '\0';
                break;
            }
        }
        c_buf = c;
        k=0;
        i++;
    } while(i!=2);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2011, 20:43     Формирование массива структур из строки
Посмотрите здесь:

Формирование одномерного массива из сумм элементов каждой строки матрицы, кратных числу k - C++
Все, вроде, правильно, но выводит только первый элемент попавший в if. #include <conio.h> #include <iostream> using...

Формирование, сортировка и обработка динамических структур данных. - C++
Требуется решить задачу формирования, сортировки и обработки динамических структур данных. Требуется создать динамический массив...

Формирование строки - C++
Здравствуйте. Вопросы таковы: 1) Если мне нужно сформировать строку из большого числа переменных разного типа (числа, массивы...

Формирование из элементов массива A нового массива B - C++
Собственно, это и есть весь вопрос. Предположим, задан некий массив A. Все элементы данного массива, удовлетворяющие некоторому свойству,...

Сортировка массива структур через сортировку массива указателей - C++
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку - помогите, пожалуйста. Код программы: ...

Формирование ключевой строки - C++
Добры день, Форумчане нужна помощь со строками. Допустим есть строка и ключевое слово, нужно получить вот такой результат: ...

формирование строки из заданного числа - C++
Написать программу, которая формируют строку из заданного количества случайных латинских букв (строчных). Например: пользователь вел...

Формирование нового массива - C++
Задан массив А(20). Сформировать новый массив В(20) элементами которого является разница между произведениями всех элементов массива и...

Задача на формирование массива. - C++
Задан массив целых чисел, вектор U: U 15 5 9 12 1 16 10 6 8 25 Сформировать новый массив V, эл-ты к-го вычисляются по формуле: Vk=...

Формирование массива из другого - C++
Найти произведение элементов массива A = {1, 3.5, 4, -0.8, 1.9, 5, 13}, удовлетворяющих условию , если С = 2, D = 10. Сформировать из этих...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
12.05.2011, 21:42     Формирование массива структур из строки #2
используй fscanf
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 118
12.05.2011, 21:43  [ТС]     Формирование массива структур из строки #3
при чем тут это?
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
12.05.2011, 21:55     Формирование массива структур из строки #4
потому что пишешь велосипед когда можно воспользоваться функцией
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 118
12.05.2011, 23:05  [ТС]     Формирование массива структур из строки #5
Функция fscanf() работает подобно функции scanf(), но читает информацию не из стандартного потока ввода stdin, а из потока, заданного указателем stream. Подробности рассматриваются в разделе этой главы, посвященном функции scanf.

как это разобьет мне считанный файл на структуру?

Добавлено через 1 час 9 минут
panicwassano, все.. понял.. но увы, я не умею этим пользоваться(

кстати, все таки написал..
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
for (i=0;i<kol;i++) { if (buffer[i] == '\n') kol_strok++; }
    for (i=0;(i<=kol_strok) && (c < kol-1);i++) {
        k = 0;
        for (c=c_buf;buffer[c] != '\n';c++) {
            c--;
            if (buffer[c] == ';') k++;
            c++;
            switch (k) {
                case 0:
                    for (tmp=0; buffer[c] != ';'; tmp++) {
                        a[i].F[tmp] = buffer[c];
                        c++;
                    }
                    a[i].F[tmp++] = '\0';
                    break;
                case 1:
                    for (tmp=0; buffer[c] != ';'; tmp++) {
                        a[i].I[tmp] = buffer[c];
                        c++;
                    }
                    a[i].I[tmp++] = '\0';
                    break;
                case 2:
                    for (tmp=0; buffer[c] != '\n'; tmp++) {
                        a[i].O[tmp] = buffer[c];
                        c++;
                    }
                    a[i].O[tmp++] = '\0';
                    c--;
                    break;
            }
        }
        c_buf=c+1;
    }
так работает)
kRicha
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 118
13.05.2011, 23:12  [ТС]     Формирование массива структур из строки #6
снова столкнулся с проблемой =(
Вот у меня структура и как я ее заполняю:
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
    struct user 
    {
        char F[15];
        char I[15];
        char O[15];
    } a[10];
    
    for (i=0;i<kol;i++) { if (buffer[i] == '\n') kol_strok++; }
    for (i=0;(i<=kol_strok) && (c < kol-1);i++) {
        k = 0;
        for (c=c_buf;buffer[c] != '\n';c++) {
            c--;
            if (buffer[c] == ';') k++;
            c++;
            switch (k) {
                case 0:
                    for (tmp=0; buffer[c] != ';'; tmp++) {
                        a[i].F[tmp] = buffer[c];
                        c++;
                    }
                    a[i].F[tmp++] = '\0';
                    break;
                case 1:
                    for (tmp=0; buffer[c] != ';'; tmp++) {
                        a[i].I[tmp] = buffer[c];
                        c++;
                    }
                    a[i].I[tmp++] = '\0';
                    break;
                case 2:
                    for (tmp=0; buffer[c] != '\n'; tmp++) {
                        a[i].O[tmp] = buffer[c];
                        c++;
                    }
                    a[i].O[tmp++] = '\0';
                    c--;
                    break;
            }
        }
        c_buf=c+1;
    }
далее, я хочу добавить еще один элемент к структуре, пытаюсь это сделать так:
C++
1
2
3
printf("Vvedite Familiyu: "); scanf("%s",a[kol_strok].F);
    printf("Vvedite Imya: "); scanf("%12s",a[kol_strok].I);
    printf("Vvedite otchestvo: "); scanf("%12s",a[kol_strok].O);
Но при вводе фамилии, оно почему-то добавляет ее к отчеству последнего элемента, считанного с файла.. Подскажите где я не прав...
Yandex
Объявления
13.05.2011, 23:12     Формирование массива структур из строки
Ответ Создать тему
Опции темы

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