Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 084
от 25.09.2002, 21:10

Администратор:
Имя: Коробов Н.А.
URL: Информационный ресурс
ICQ: 365124
Украина, Днепропетровск
О рассылке:
Задано вопросов: 253
Отправлено ответов: 567
Активность: 224.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Pablo
Статус: Профессиональный
Общий рейтинг: 131.89
URL: Моя страничка
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 110.54
[Подробней >>]
Biv
Статус: Доверительный
Общий рейтинг: 129.59
[Подробней >>]
 
Zloy
Статус: Опытный
Общий рейтинг: 108.11
URL: The полный отстой
[Подробней >>]
Jadd
Статус: Опытный
Общий рейтинг: 155.88
[Подробней >>]
Kiss
Статус: Опытный
Общий рейтинг: 139.25
[Подробней >>]
 
E$h@
Статус: Доверительный
Общий рейтинг: 128.44
[Подробней >>]
Yuri Gordienko
Статус: Доверительный
Общий рейтинг: 130.2
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 238. Хай! Вот сервер "Апач" сделан на С++, а IIS ,майкросовтский, на чём сделан??? Кто нить зна... (ответов: 5)
Вопрос № 239. Уважаемые экспетры, возник следующий вопрос: Как программно можно удалить байт/несколько байт из фай... (ответов: 8)

Вопросов: 2, ответов: 13


 Вопрос № 238

Хай!
Вот сервер "Апач" сделан на С++, а IIS ,майкросовтский, на чём сделан??? Кто нить знает?



Вопрос отправлен: 21.09.2002, 21:52
Отправитель: soldier

[Следующий вопрос >>] [Список вопросов]

Отвечает Pablo

п—пґяЂп°пІяЃя‚пІяѓп№я‚пµ, soldier!
пќп°пІпµяЂпЅяЏпєп° пЅп° п’пёп¶яѓп°п» пЎяЏя…!))) пђ пІпѕя‚ пЅп° пєп°пєпѕпј яЃпё яЃпґпµп»п°пЅ пђпїп°я‡?? пњпѕп¶пµя‚ пЅп° gcc??

Ответ отправлен: 22.09.2002, 15:44
Отправитель: Pablo


Отвечает vitya

Доброе время суток, soldier!
VC++6.0

Ответ отправлен: 22.09.2002, 14:37
Отправитель: vitya


Отвечает Biv

Добрый день, soldier!
Понятное дело, что написан он не на Барсике а на С++ ,ну и скорее всего на VC++

Ответ отправлен: 22.09.2002, 14:39
Отправитель: Biv


Отвечает Zloy

Добрый день, soldier!
Прдположу, что как и все их продукты на С++ (ну может быть на С).


Ответ отправлен: 23.09.2002, 11:57
Отправитель: Zloy


Отвечает Jadd

Добрый день, soldier!
Топором рублен :))). А какое это принципиальное имеет значение? Я знавал людей, которые и на Tcl/Tk проги ваяли и что? IIS скорее на сях и писан. Универсальнее язык трудно найти.

Ответ отправлен: 23.09.2002, 13:28
Отправитель: Jadd


 Вопрос № 239

Уважаемые экспетры, возник следующий вопрос:
Как программно можно удалить байт/несколько байт из файла?
Какие существуют алгоритмы и где можно ознакомиться с их реализацией?
Спасибо.



Вопрос отправлен: 22.09.2002, 16:25
Отправитель: Подбельский В.К. (podbelsky@rbcmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Kiss

Добрый день, Подбельский В.К.!
Необходимо просто читать по симвально файл и пропускать необходимые символы создавая копию файла!

Ответ отправлен: 22.09.2002, 17:22
Отправитель: Kiss


Отвечает Biv

Приветствую Вас, Подбельский В.К.!
Простейший вариант такой.
Допустим тебе нужно удалить 10-ый байт (или с 10-го по 20-ый, это не принципиально). Получаем бинарный доступ к файлу, например так:
#include // Файл с функциями доступа к ф-лу
#include // Константы "O_RDWR","O_BINARY"
.........
int fHandle1 = open("blabla.fil", O_RDWR, O_BINARY));
Создаешь временный файл (примерно так же).
Читаешь функцией read(fHandle1, buffer, 9) (типа девять байт которые у тебя останутся)
Записываешь buffer функцией write(FHandle2, buffer, 9)
Затем смещаешь файловый указатель функцией
lseek(fHandle1, nbyte) (nbyte - кол-во байт от которых ты хочешь избавиться)
И все остальное запихиваешь (кол-во всего остального можно посчитать, зная размер файла с помощью ф-ции чтения размера файла(filesize(int)), так:
filesize(fhandle) - nbyte - 9, напомню, что 9 - это условное значение - это число байт до первого удаляемого символа).
Ну а как запихнуть все это в файл нетрудно догадаться.
С уважением, Biv


Ответ отправлен: 22.09.2002, 23:31
Отправитель: Biv


Отвечает E$h@

Добрый день, Подбельский В.К.!
Честно говоря не понял вопрос! Как можно удалить байт? В смысле затереть его (тогда просто пиши в тот байт ноль) или чтобы ещё размер файла уменьшить на этот байт (тогда надо думать ГОЛОВНЫМ мозгом у меня с ходу 3 мысли возникли, а вам слабо :)???
Вобщем желаю удачи

Ответ отправлен: 23.09.2002, 15:56
Отправитель: E$h@


Отвечает Zloy

Доброе время суток, Подбельский В.К.!
Если я правильно понял, нужно считать файл по-байтово в память, просто переписать эти байты и сохранить файл.
Вообщем не очень понятно, что надо...

Ответ отправлен: 23.09.2002, 11:56
Отправитель: Zloy


Отвечает Yuri Gordienko

Здравствуйте, Подбельский В.К.!
Никакого специального метода нет, т.к. все делается просто:
читаешь файл в буфер и пишешь обратно исключая ненужные тебе куски.
Фактически все реализуется через fopen,fread,fwrite,fclose

Ответ отправлен: 23.09.2002, 12:13
Отправитель: Yuri Gordienko


Отвечает vitya

Приветствую Вас, Подбельский В.К.!
Насколько я могу судить алгоритм - прочитать файл до конца (кусками или полностью) начиная с конца стираемой последовательности и записать его с ее (последовательности) начала, вас не устраивает.
Для системы Windows могу предложить метод, который будет по всей видимости работать быстрее: создайте memory mapping - вызовите memcpy(), сработает быстрее.


Ответ отправлен: 23.09.2002, 13:00
Отправитель: vitya


Отвечает Jadd

Добрый день, Подбельский В.К.!
стандартными процедурами работы с фалами и файловыми потоками, типа fseek, fput(c, s, wc, ws), fgets, fwrite, fread - все это из стандартного сишного набора прототипов функций в stdio.h . Плохо язык учите, товарищ


Ответ отправлен: 23.09.2002, 13:20
Отправитель: Jadd


Отвечает Pablo

Доброе время суток, Подбельский В.К.!
Мне на ум навскидку только один алгоритм приходит, нужно установить указатель на то место откуда начинается информация, которую удалять не надо и которая идет после той, которую нужно удалить. Считать с этого места файл в память, установить указатель на начало места для удаления байтов и записать на то место информацию, которая была считана в память. Файл должен быть при этом открыт на чтение и запись.

Ответ отправлен: 24.09.2002, 20:04
Отправитель: Pablo



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (28)
Perl (7)
Delphi (15)
Pascal (24)
Basic / VBA (12)
Java / JavaScript (10)
PHP (6)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (39)
Windows NT/2000/XP (31)
"Железо" (36)
Поиск информации (14)
Администратору
Windows NT/2000/XP (17)
Linux / Unix (17)
Юристу
Гражданское право (9)
Семейное право (4)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное