![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 2 Всего: 7 |
Попробуй подключить "mozg.h", должно помочь. ;) Это сообщение отредактировал(а) Rpahut - 16.9.2008, 22:53 --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
вроде все сделал как хотел , одна загвоздка ..
если сделать в отдельном проекте то все нормально ,, когда себе встраиваю в виде функции то , пропускает цикл While , т.е. код:
в текксте программы указан вопрос , вообще не понимаю , по идею он не правильно считывает файл , но в отдельном проектк асболютно то же самое и там все нормально , .. как он может проходить проверки !res и выходить на while....!=NULL ,а так спасибо большое , наконец то разобрался))! |
|||
|
||||
inside_pointer |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
цикл заканчивает работу(это может быть и на самом первом шаге) когда fgets встретила конец файла или не смогла прочитать вообще что-либо из файла(такое бывает когда файл открыт на запись и читать из него нельзя) когда файл вообще не открыт случается сегфолт
эта запись означает что в строке должны быть куски по типу one two three four они могут быть и 1 2 3 4 то есть если у тебя abcdefg_hijklmn_opq_rstu это поместится в strt а остальные останутся пустыми и у тебя не будет кусков типа one\ntwo\nthree\nfour т.к. fgets читает только одну строку и в ней есть только один символ конца строки (в самом конце) при использовании sscanf(line, "%s", line); из строки считывается из "one two three four\n" только one из "one1\n" считывается one1 это использовано для того чтобы функции strcmp передавать на сравнение кусок без \n ещё
замени на
так уматнее |
||||||||||||
|
|||||||||||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
ну у меня result.txt выгледит так
что странно, при выноси в другой проект работает идеально ... пчему же он считает что там сразу кончается файл ... я думаю он его не правильно читает... вот токо запустил проверить , поменял формат r на r , и он заработал , что то тут не чисто , порой одно и то же поразному воспренимает ... ну вообще то спасибо большое , этот вопрос вроде как решил) |
|||
|
||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
осталось маленький подвопрос на это жу тему ..
как читать , не из файла а из строки , такого же типа файл
что бы в a[0] был musik в a[1] был pop и . д , до конца строки , ?? делал while(gets(buff)!=Null) не работает , не переходит дальше по строчке , что понятноо.. как же сделать? |
|||
|
||||
inside_pointer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
по поводу gets, забудь про неё, вместо неё используют fgets(line, MAXLINE, stdin)
а вот второе, разобрать строку, есть функция strtok, до полного разбирательства пользоваться не рекомендую, т.к. вроде всё красиво всё должно работать, однако потом напарываешься на всякую фигню (время теряешь)
такой работает, malloc делает что: она для каждой строки создаёт блок памяти её размера, потом в него её записывает, и дальше указатель на этот блок помещает в массив указателей получается массив указателей на строки Это сообщение отредактировал(а) inside_pointer - 19.9.2008, 07:30 |
||||
|
|||||
Su_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 386 Регистрация: 1.8.2007 Репутация: нет Всего: нет |
мм , просто супер , спасибо большое , сегодня все всторил в программку , наладил , работает как часы , ))еще раз Огромное спаибо , я думаю вопрос РЕШЕН)!
|
|||
|
||||
inside_pointer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
вот ещё надыбал как можно читать строку с помощью scanf, правда нет ограничения на её длину (то есть можно ввести слишком длинную строку которая не предусмотрена)
в результате получается цикл где срабатывают строки
после каждой строки должен быть только один перевод строки, на двух и более цикл останавливается |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |