Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

функция получения массива - C++

11.01.2012, 22:02. Просмотров 556. Ответов 1
Метки нет (Все метки)

// arr из строки файла fl и записи размера получ. массива в перем. size
int* getArray(int * arr, FILE * f, int &size) //int& обеспечивает передачу пер-нной размера массива по ССЫЛКЕ (для возм. изменения)
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
{
        int  buf;
        char chr;
        while(!feof(f) && arr != NULL)
        {
                if(fscanf(f,"%d%c",&buf,&chr))
                {
                        arr[size] = buf;
                        arr = (int *)realloc
                                (
                                        (void *)arr,
                                        (2 + (size++))*sizeof(int)
                                );
                }
                else
                {
                        printf("Ошибка чтения из потока : 0x%p",f);
                        break;
                }
                if(chr == '\n')
                        break;
        }
        return arr;
}
Просьба прокомментировать эту функцию, а именно :

C++
1
1) if(fscanf(f,"%d%c",&buf,&chr))
C++
1
2
3
4
5
6
2) arr[size] = buf;
                        arr = (int *)realloc
                                (
                                        (void *)arr,
                                        (2 + (size++))*sizeof(int)
                                );
C++
1
 if(chr == '\n')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2012, 22:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функция получения массива (C++):

Функция для получения [i,j] элемента массива - C++
Есть следующая пирамида: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 Необходимо сделать функцию или метод для получения ...

Функция для получения ThreadId приложения - C++
Народ, здрасти! Скажите пожалуйста, с помощью какой ф-ции можно надыбать ThreadId (или Thread) по хэндэлу или кэпшону приложения? Есть ли...

Функция для получения пути к приложению - C++
Привет, как написать функция которая будет возвращать путь к запущенному приложении ? if( !gSplashTexture.loadFromFile( "splash.png" ) )...

Универсальная функция получения числа через cin - C++
Пытался написать универсальную функцию для гарантированного получения числа нужного типа, примерно так: // Функция для безопасного...

Удобная функция или класс для получения MD5 - C++
Привет! Не подскажите удобную протестированную функцию или класс для получения md5 строки? Искал в boost, но что-то пока не обнаружил....

Нужно сделать, чтобы программа состояла из 3 функций, тоесть 1-ая функция ввода массива, 2-ая основная функция, 3-я- вывод массива - C++
Есть программа #include <iostream> #include <algorithm> const int N = 5; int handSet(void) { int a; std::cout...

1
-=ЮрА=-
Заблокирован
Автор FAQ
11.01.2012, 22:47 #2
Цитата Сообщение от sonice Посмотреть сообщение
if(fscanf(f,"%d%c",&buf,&chr))
- если чтение удачно(из файла читаются int и char и "%d%c"
Элемент массива arr[size] = buf; инициализируется значением переменной buf(думаю size изначально = 0)

Цитата Сообщение от sonice Посмотреть сообщение
arr = (int *)realloc
* * * * * * * * * * * * * * * * (
* * * * * * * * * * * * * * * * * * * * (void *)arr,
* * * * * * * * * * * * * * * * * * * * (2 + (size++))*sizeof(int)
* * * * * * * * * * * * * * * * );
- здесь идёт увеличение памяти массива + инкремент счётчика элементов массива
Цитата Сообщение от sonice Посмотреть сообщение
if(chr == '\n')
- если символ равен '\n' переводу каретки

Цитата Сообщение от sonice Посмотреть сообщение
while(!feof(f) && arr != NULL)
* * * * {
* * * * * * * * if(fscanf(f,"%d%c",&buf,&chr))
* * * * * * * * {
* * * * * * * * * * * * arr[size] = buf;
* * * * * * * * * * * * arr = (int *)realloc
* * * * * * * * * * * * * * * * (
* * * * * * * * * * * * * * * * * * * * (void *)arr,
* * * * * * * * * * * * * * * * * * * * (2 + (size++))*sizeof(int)
* * * * * * * * * * * * * * * * );
* * * * * * * * }
* * * * * * * * else
* * * * * * * * {
* * * * * * * * * * * * printf("Ошибка чтения из потока : 0x%p",f);
* * * * * * * * * * * * break;
* * * * * * * * }
* * * * * * * * if(chr == '\n')
* * * * * * * * * * * * break;
* * * * }
- это всё чтение в цикле элементов массива с динамическим выделением памяти под него(а эт не моя функция???)

Не по теме:

PS:Написал бы вконтакте я ответил бы, вообще после проекта с продуктами чёт замолчал

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2012, 22:47
Привет! Вот еще темы с ответами:

Написать рекурсивную функцию для получения индекса максимального массива из 5 элементов - C++
Написать рекурсивную функцию для получения индекса максимального массива из 5 элементов помагите надо написать с++

Функция заполняющая массив и функция вывода массива - C++
Напишите две функции. Первая функция заполняет массив, вторая функция выводит массив на экран

Почему при присваивании адреса массива не ставится знак '&' получения адреса - C++
int main() { int a = { 2, 3 }; int* b; b = a; //Почему при присваивании адреса массива не ставится знак '&' получения адреса. ...

Функция с применением динамического массива, чтобы размер массива увеличивался по мере необходимости - C++
Ребята, подскажите, кто может, каким образом создать функцию с применением динамического массива, но так, чтобы размер массива увеличивался...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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