9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
|
||||||
1 | ||||||
Парсер массива22.12.2010, 18:03. Показов 3438. Ответов 19
Метки нет (Все метки)
Поскажите пожалуйста, парсер массива чисел на входе: строка вида "число|число|число|число" и кол-во чисел. число - целое, на выходе: массив из чисел
функцию strtok и аналоги не использовать, а atoi можно. Первый раз пишу парсер, куча ошибок и не доработок, помогите плз
0
|
22.12.2010, 18:03 | |
Ответы с готовыми решениями:
19
Парсер массива Парсер JSON массива Парсер С# парсер |
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
22.12.2010, 19:01 | 2 | |||||
1
|
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
|
|
23.12.2010, 11:23 [ТС] | 3 |
Nameless One, а проще сделать можно?
0
|
grrrrr
|
23.12.2010, 12:00
#4
|
Не по теме:
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
23.12.2010, 13:01 | 5 |
0
|
4767 / 2577 / 892
Регистрация: 29.11.2010
Сообщений: 5,573
|
|
23.12.2010, 13:11 | 6 |
Это решение, похоже, исходную строку модифицирует.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
23.12.2010, 13:14 | 7 |
lemegeton, ага, что я и написал в комментарии
0
|
lemegeton
|
23.12.2010, 13:16
#8
|
Не по теме: Меня сложно упрекнуть в чтении документации.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
23.12.2010, 13:31 | 9 | |||||
Вот без модификации исходной строки (также немного подправил условие в строке 41):
0
|
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
|
|
23.12.2010, 14:48 [ТС] | 10 |
не понял вот эту строчку int* getNumbers(char*, int*, size_t, size_t*)
а именно (char*, int*, size_t, size_t*) распишите по подробней, я ни как не магу врубиться что это и как это, вот сижу книгу читаю, ни как не найду(((
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
23.12.2010, 14:56 | 11 |
Это прототип функции getNumbers, принимающей параметрами указатель на char, указатель на int, переменную типа size_t и указатель на size_t и возвращающей указатель на int. Прототип просто объявляет интерфейс функции, которая будет определена позднее, при этом имена формальных параметров можно не указывать, достаточно указать только типы. Использовать прототип не обязательно, это всего лишь дело вкуса. В моем случае он нужен потому, что функция getNumbers определена ниже функции main. А можно было бы определить функцию выше функции main и избавиться таким образом от необходимости объявлять прототип функции
Глянь еще здесь
0
|
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
|
|
23.12.2010, 15:06 [ТС] | 12 |
Nameless One, ну с прототипом я знаком, я не пойму почему ты используешь size_t и делаешь ещё указатель *size_t
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
23.12.2010, 15:17 | 13 | |||||
Вообще можно было бы сделать динамически расширяющийся массив чисел, но тогда на пользователя возлагалась бы задача освобождения выделенной памяти
0
|
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
|
|
23.12.2010, 16:10 [ТС] | 14 |
а что эта запись значит char buf[BUFFSIZE + 1] ?
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
23.12.2010, 16:15 | 15 | |||||
yardie, объявляется строка (массив char) размера BUFFSIZE + 1. Кстати, там лучше было бы под строку выделить не BUFFSIZE + 1, а BUFFSIZE символов:
0
|
9 / 9 / 2
Регистрация: 14.07.2010
Сообщений: 166
|
|
23.12.2010, 16:16 [ТС] | 16 |
а почему +1, это так для чего делать?
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
23.12.2010, 16:25 | 17 | |||||
Потому, что строки C обычно заканчиваются на символ '\0', который является признаком конца строки. Многие функции работы со строками неявно записывают этот символ в строку, либо ожидают, чтобы он там присутствовал. Таким образом, мы говорим: создать массив типа char, который может хранить до BUFFSIZE символов + завершающий символ '\0'.
Чуть выше я предложил исправить это объявление на
0
|
21 / 21 / 7
Регистрация: 21.09.2010
Сообщений: 65
|
|
23.12.2010, 16:27 | 18 |
Этот плюс 1 для '\0' (ограничитель строки)
0
|
Nameless One
|
23.12.2010, 16:28
#19
|
Не по теме: Reee, слеш немного не в ту сторону ;)
1
|
Reee
|
23.12.2010, 16:29
Парсер массива
#20
|
0
|
23.12.2010, 16:29 | |
Парсер Парсер на js Парсер на С парсер на C# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |