Здраствуйте эксперты. Пытаюсь я работать с файлами на СИ. Помогите пожалуйста разобраться что здесь не так: if (c==EOF)//c-ранее определена как переменная {fclose(fp); return 0; } Компилятор (Borland C++ 3.1) выдаёт предупреждеие "Constant out of range in comparsion"(ругаясь на EOF) и прога вместо того чтоб закрыть файл начинает циклить. P.S Excuse me за глупый вопрос......
Несмотря на то, что в UNIX (а именно для него писался C - чтобы потом на нём писать UNIX:) все файлы байтовые, функции чтения из файлов возвращают значения типа int. Это было сделано для того, чтобы помимо данных файла можно было прочитать состояние файла (результат операции). Вот на это ты и напоролся. И эксперты поняли это. А то, что выше - лирическое отступление. Ответ отправлен: 21.08.2002, 13:52 Отправитель: Артём Шегеда Отвечает Zloy
Приветствую Вас, Вася! Из предложенного тобой куска понять что-то сложно, но попытайся использовать функцию feof (FILE *f)
Приложение: Ответ отправлен: 22.08.2002, 07:54 Отправитель: Zloy Отвечает baldr
Доброе время суток, Вася! Скорее всего, EOF объявлена в h-файле как int или long, а Ваша переменная c - как char? Сравнивать нужно величины одинаковой размерности.
Ответ отправлен: 21.08.2002, 23:37 Отправитель: baldr Отвечает Dzik
Приветствую Вас, Вася! Проверяй на конец файла так: if (feof(fp)) { fclose(fp); return 0; }
Ответ отправлен: 21.08.2002, 07:11 Отправитель: Dzik Отвечает vitya
Добрый день, Вася! по всей видимости, так как кода очень мало, я предполагаю, что c определенна, как char, в то время как EOF есть int, соответственно если ты поменяешь char на int у тебя все должно работать. А вообще пользуйся функцией feof(f) Ответ отправлен: 21.08.2002, 08:30 Отправитель: vitya Отвечает Vladimir
Добрый день, Вася! Посмотри внимательно тип своей переменной. Она должна быть int, но не char, потому что EOF в char не входит.
Ответ отправлен: 21.08.2002, 09:09 Отправитель: Vladimir
Вопрос № 169
Здравствуйте! Блин. Чего-то я недопонимаю. Раньше у меня стояла Вынь98 и я ради прикола сделал прогу которая вырубала по таймеру комп. Использовал ExitWindows или ExitWindowsEx. Сейчас стоит 2000 и ExitWindowsEx вообще не работает, а ExitWindows просто заканчивает сеанс, что тоже не есть хорошо. Как мне все это замутить. Может у меня ручки кривые??? Кто мне может объяснить (желательно с примером) зачем нужно делать два потока для отправки писем? Сэнкс.
Не получится у тебя вырубить комп своими силами. Это защита. Ты запускаешь процесс с привелегиями пользователя, а чтобы машину выключить, нужны привелегии администратора. А такие привелегии даны только службам (services). Это NT... Ответ отправлен: 21.08.2002, 13:27 Отправитель: Артём Шегеда Отвечает Pablo
Доброе время суток, Илья! Попрбоуй так ExitWindowsEx(EWX_FORCE | EWX_POWEROFF) или так ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN); Ответ отправлен: 22.08.2002, 16:16 Отправитель: Pablo
Вопрос № 170
Уважаемые эксперты! как мне в Билдере загрузить данные из Хсель-таблицы ? Добавлял в ODBC Data Sources "новый источник данных", даже указал ему на конкретную таблицу. В TTable DataBaseName написал, а вот TableName пустой и в DBGrid тоже ничего. Пробовал тоже со стандартным animals.db - все отображается. Что я не так делал? Может у кого есть похожий исходник или ссылка на тему? заранее спасибо.
Здравствуйте, вова! Так ты укажи таблицу-то! В TableName напиши полный путь к твоему файлу. Ответ отправлен: 21.08.2002, 13:49 Отправитель: baldr Отвечает Dzik
Доброе время суток, вова! В 6 Билдере есть компонент для работы с Excel Ответ отправлен: 21.08.2002, 07:09 Отправитель: Dzik Отвечает Pablo
Приветствую Вас, вова! В Билдере есть компоеннеты для обработки эксельных документов так ты эти компоненты и используй, только учти что доступ к свойствам этих компонент нужно произодить через OLE-интерфейс типа IDispatch. Если в тех компонентах есть экспорт в разные форматы баз данных, то ты можешь экспортировать этот документ, а если нет то можно эспортировать простым перегоном данных из эклелевского фармата в базу данныз, т.е. чтением значения из ячейки экселя и записью в ячейку базы данных. Ответ отправлен: 22.08.2002, 16:35 Отправитель: Pablo
Вопрос № 171
Здравствуйте эксперты, подскажите какие есть функцие в iofstream.h файле для работы с файлами Отвечает baldr Доброе время суток, Serzhant_mail! iostream - это работа со вводом-выводом. А работа с файлами, втч их поиск, удаление, создание etc - это модуль DOS или DIR. Это все для работы в досе (насчет DIR не уверен), а мне нужно для работы в 32 разрядном консольном приложении windows98. Кто-то еще писАл что есть в других модулях есть, можно по подробнее в каких? и параметры функций пожалуйста. на MFC и WINAPI32 не надо. Спасибо.
Здравствуйте, Serzhant! Очень даже прекрасно должны они работать и из-под винды! Возможно, и устарело, но работать должно. Попробуй! Ответ отправлен: 21.08.2002, 13:44 Отправитель: baldr Отвечает Zloy
Здравствуйте, Serzhant! Так вот именно dir.h и предоставляет функции для поиска файлов в DOS, Win16, Win32 И OS/2. К тому же в консолях можно пользоваться АПИ.
Ответ отправлен: 22.08.2002, 07:53 Отправитель: Zloy
Вопрос № 172
Експерты, подскажите как.. Задача: из моей програмки надо открыть вордовский файл (опредленный) сохранить его под другим именем, и вернуть путь программе. Спасибо.
Здравствуйте, YAR! если подразумевается билдер, до примерно так: на вкладке servers берешь Word Application и WOrdDocument дальше все смотри в хелпe. В VC++ я вызвал Open() и SaveAs() параметров там много на кроме нескольких все остальные надо ставить optional. Ответ отправлен: 22.08.2002, 09:05 Отправитель: vitya Отвечает Pablo
Доброе время суток, YAR! Ну если под ДОСом то польуй функции fopen, fread, fwrite, fclose для копирования файла, под Виндами могкшь пользовать CreateFile, ReadFile, WriteFile, или CopyFile или CopyFileEx для копирования файла. Ну а возвратить программе путь это ты должен сам решить каким образом, потому что не понятно что ты под этим имел ввиду. Ответ отправлен: 22.08.2002, 16:35 Отправитель: Pablo
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.