![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
XYZ010 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
Вот некая функция которой передается одно строчный массив с читаный из файла массив выглядит так а=a \nб=b\nв=v\n ...размер не известен. Функция записывает этот массив в двух мерный массив типа [0] a=a [1] б=b [2] в=v ...ну или должна записывать в main объявляется массив char** , выделяется память малоком . короче не работает подскажите что делать а?
Модератор: Не забываем пользоваться кнопочкой "Код" Это сообщение отредактировал(а) XYZ010 - 26.10.2009, 20:03 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
ты уверен, что первый символ aray_file будет не '\0'?
А где собственно main()? В частности, хотелось бы узнать, как ты память выделяешь. Что говорит компилятор? На какую строку ругается? |
|||
|
||||
XYZ010 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
нет первый символ не ноль я уверен. И даже цикл какое то количество раз прокручиваться а потом просто компилятор вылетает заканчивает работу аварийно просто закрывается и все.
вот main
Это сообщение отредактировал(а) XYZ010 - 26.10.2009, 19:14 |
|||
|
||||
XYZ010 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
чет ни кто ни отвечает
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
XYZ010, не путай понятия "компилятор" и "откомпилированная программа". Так как если падает компилятор, то твоя программа даже не запустится, так как не будет создано *.exe файла.
Кстати, пошаговая отладка помогает решить подобные проблемы. |
|||
|
||||
XYZ010 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
Ну может я не правильно сформулировал. Просто когда запускаешь программу из оболочки оболочка падает в месте с программой Вот я и не могу понять в чем проблема именно когда отлаживаю пошагово. Программа точь но так же вылетает. Во время цикла. На том шаге на котором вылетает программа память почему то не выделяется ну или может и выделяется но строка в нее не записывается и в место обычного мусора в памяти какие то символы одинаковые '255'. |
|||
|
||||
XYZ010 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
именно так
Функция strncpy копирует len первых символов из массива aray_file в массив buf[i] который обьявлен в мейне вот это собственно и инициализация или я что то не правильно понимаю. Это сообщение отредактировал(а) XYZ010 - 27.10.2009, 07:02 |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
XYZ010, ты знаешь, что sizeof(char*) != sizeof(char)? Более того, sizeof(char*) может быть 2, 4 или 8, а sizeof(char) всегда 1. Таким образом, выделяя память на 512 char'ов (а malloc(512) именно это и делает), ты можешь получить 256, 128 или 64 указателей... Чтобы проблем не было, надо делать так:
|
|||
|
||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Неправильно. Функция strncpy НЕ ВЫДЕЛЯЕТ память для копируемой строки. Ты ее то же не выделяешь ![]()
Еще совет - открой для себя функцию strtok - твоя array_chars запишется в 3 строки ![]() |
||||||||
|
|||||||||
XYZ010 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
Ребя спасибо все исправил многому наулился особая благодарность господину Хvr вот такая у меня функция получилась
а вот обьявление и инициализация массива
|
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
При реализации через strtok выделять память для buf[i] не надо - strtok нарезает ИСХОДНУЮ строку и в buf[i] складываются указатели на части aray_file
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |