![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
AcetoN |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.5.2007 Репутация: 1 Всего: 1 |
Здравствуйте господа уважаемые программеры!
Пишу курсач на тему списков. Имеется список неких (целого типа) элементов. Используя двусвязный (двунаправленный) линейный список, хочу сделать элементарную казалось бы вещь: вывести список из файла на экран. Файл текстового типа и содержит след. записи:
В итоге программа выдаст строку
Текст программы
Сама проблема заключается в следующем. В данном тексте программы имеется функция считывания записей из файла и последующее построение списка. Затем все добро выводится на экран. Так вот сразу после старта программы если ввести имя файла, из котрого необходимо считать данные, программа проглатывает строку и как ни в чем не бывало просит ввести ее заново. Что, собственно наводит меня на мысль что она каким-то таинственным образов циклится. Хотя первоначально у меня даже вовсе не было цикла DO-WHILE программа упорно зависала на этом участке. Помогал только CTRL+BREAK. А если просто убрать функцию считывания и сделать ее частью void main() то все работает прекрасно. Вот и прошу у вас помощи что может быть у меня не так с оформлением/написанием этой злосчастной процедурки. P.S. Функция prntr(); работает правильно. Так же как и сами списки и их построения. В принципе дело даже до них и не доходит... Прошу заметить что пишу на Си! Использую Borland Turbo C++ 3.0 Это сообщение отредактировал(а) AcetoN - 9.1.2008, 02:37 |
||||||
|
|||||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 2 Всего: 37 |
без двойного слеша пробовал вводить? просто C:\file.txt
Зы спец. символы только в литералах обрабатываются ЗЗЫ оч.много логических ошибок в исходнике. ![]() Это сообщение отредактировал(а) Sartorius - 9.1.2008, 01:34 |
|||
|
||||
AcetoN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.5.2007 Репутация: 1 Всего: 1 |
Sartorius, все компилится без ошибок! не важно что я ввожу, при неправильном вводе должно последовать сообщение что имя файла неправильно
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: нет Всего: 183 |
Это по-твоему гарантирует правильность кода?
Берешь отладчик и идешь по шагам. Проверяешь по дороге все переменные. Если будешь гадать, так с тайнами и останешься. И подумай еще раз над тем, что тебе написал Sartorius. -------------------- ... |
|||
|
||||
AcetoN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.5.2007 Репутация: 1 Всего: 1 |
я к сожалению не знаю как работает отлдачик, собственно поэтому я и прошу помочь, а думаю я уже много ![]() Если прервать программу то она останавливается на строке scanf("%d", &filename); |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
настоятельно советую разобраться. |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
А "invalid file name" выводит? Сделай так:
Может быстрее найдёшь ошибку. А с чего ты взял, что он вводит с двойным слэшом? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
0lmer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 3.12.2006 Репутация: нет Всего: -1 |
А зачем в каждом элементе структуры хранить указатели на первый и последний??? А так разве можно? Когда я делал нечто подобное со списками у меня прога висла если в конце файла был перевод строки, поэтому пришлось замутить свой признак конца файла (нечто типа ({[<"___THE___END___">]}) после всех данных). ![]() |
|||
|
||||
AcetoN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.5.2007 Репутация: 1 Всего: 1 |
archimed7592, инвалид не выводит
0lmer, у меня в конце файла не стоит перевод строки (кстати с ним вместо 10 записей считывется 11, вида "45764") Согласен, start можно и не возвращать, но так ведь программа работает, если не оформлять ее как функцию, проблема именно в оформлении оной, с этим у меня туго... |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Ок. Ты вставил мой код? Покажи, что вводишь и что выводит(дословно). Заметь, что clrscr я закомментировал. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
AcetoN |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.5.2007 Репутация: 1 Всего: 1 |
Вставил, вот что пишет
D:\file.txt - реальный файл Это сообщение отредактировал(а) AcetoN - 9.1.2008, 19:09 |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Разберись, почему не отрабатывает эта строка:
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
AcetoN |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.5.2007 Репутация: 1 Всего: 1 |
Да, разобраться-то оно дело хорошее, знать бы как... Я тут еще поковырялся и вот что заметил, если сменить расширение исходника с *.C на *.CPP то происходит маленькое чудо, файл начинает открываться, появляется сообщение о неправильности имени, и наконец программа уже даже читает записи из файла! Еще немного повозившись, я наконец довел это до ума. Но блин, непонятно же, как оно так? Неужели все настолько от расширения зависит?
Это сообщение отредактировал(а) AcetoN - 9.1.2008, 22:20 |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Нет, конечно. Зачем файл два раза открываешь? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
AcetoN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.5.2007 Репутация: 1 Всего: 1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |