Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45

fread или как отправить файл по сети

28.10.2013, 01:08. Показов 2299. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Есть задача: отправить .jpg файл по http. Как я понял мне надо сделать массив char заполнить его содержимым файла и собственно отправить. Использую для этого функцию fread(). Проблема: функция fread() копирует все символы до первого "\0" (увидел это в дебаге), и копируются только первые 6 байт. Через блокнот удалил этот символ из файла, и стало копироваться как надо, но это не устраивает. Прочитал что "\0" влияет только на printf, но в моем случае не только. Так же пробовал fscanf, fgets один и тот же результат. Заранее благодарю.
C++
1
2
3
4
5
6
7
8
9
10
11
FILE *pFile;
long lSize;
char *buffer;
pFile = fopen("C:\\Picture.jpg", "r");
fseek(pFile, 0, SEEK_END);
lSize = ftell(pFile);
fseek(pFile,0,SEEK_SET); //go to beg.
rewind(pFile);
buffer = (char *) malloc(sizeof(char) * lSize);
ZeroMemory(buffer, lSize+1);
fread(buffer,lSize,1,pFile);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2013, 01:08
Ответы с готовыми решениями:

Как отправить файл на сервер сайта или на почту?
Всем привет, помогите решить вопрос как отправить файл на сервер сайта или же на почту. Потратил около 4 часов поиска так ничего и не...

Как отправить/получить файл на ftp из VBA или VBS
Подскажите,или ещё лучше - поделитель живым примером, как отправить/получить файл на ftp с помощью VBA или VBS

Отправить компьютер в сон или ждущий режим по сети
День добрый. Есть около 40 компьютеров в разных подсетях. Настроил батники на копирование по всем компам (по имени компа) каких либо...

25
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:16
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
функция fread() копирует все символы до первого "\0" (увидел это в дебаге)
Тут что-то другое. Бинарное чтение: сколько написано байтов прочитать, столько должно и прочитать, если только байты не кончатся или ошибка не произойдёт.

Добавлено через 3 минуты
Что за ZeroMemory() ?

Добавлено через 38 секунд
Файл Picture.jpg выложите.
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:25  [ТС]
Попробовал на других картинках(bmp), тоже самое. Может есть какой другой способ работы с файлом?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:29
В бинарном режиме нужно файл открывать, раз используете бинарное чтение:
C++
1
pFile = fopen("C:\\Picture.jpg", "rb");
И на вопросы отвечать не помешало бы...
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:30  [ТС]
Вот изображение для примера
Миниатюры
fread или как отправить файл по сети  
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:31  [ТС]
Извиняюсь за задержку, при открытии "rb" тоже самое, но где-то встретилось, что лучше использовать "r"
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:37
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
Вот изображение для примера
Примеры мне не нужны, мне файл нужен для проверки. Который я использую, ваш код (с rb) считывает полностью.
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
но где-то встретилось, что лучше использовать "r"
Для бинарного чтения? В морду плюньте тому, кто это посоветовал.
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
при открытии "rb" тоже самое,
Что тоже самое? Откуда видите? Как проверяете?

Добавлено через 3 минуты
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Что за ZeroMemory() ?
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:37  [ТС]
Проблема в том, что у меня с этого файла считывается только заголовок "яЩая"
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:38
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
Проблема в том, что у меня с этого файла считывается только заголовок "яЩая"
Проблема в том, что вы на вопросы не отвечаете...
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:39  [ТС]
ZeroMemory просто для очистки, в дебаге просматриваю: из jpg файлов копируеься "яЩая", из bmp "BM6"
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:40
Вот код и результат чтения файла .jpg, размером 942994 байта. Как видите, все байты считаны.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <fstream>
#include <cstdlib>
 
using namespace std;
int main()
{
    FILE *pFile;
    long lSize;
    char *buffer;
    pFile = fopen("3.jpg", "rb");
    if (pFile)
    {
        fseek(pFile, 0, SEEK_END);
        lSize = ftell(pFile);
        //fseek(pFile, 0, SEEK_SET); 
        rewind(pFile);
        buffer = (char *) malloc(sizeof(char) * lSize);
        //ZeroMemory(buffer, lSize + 1);
        int n = fread(buffer, 1, lSize, pFile);
        cout << n << endl;
    }
    system("pause");
    return 0;
}
Миниатюры
fread или как отправить файл по сети  
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:40  [ТС]
Проблема в том, что вы на вопросы не отвечаете...
--
Навожу на переменную buffer курсор и мне показывается текущее значение
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:42
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
ZeroMemory просто для очистки, в дебаге просматриваю: из jpg файлов копируеься "яЩая", из bmp "BM6"
Код покажите и файл jpg выложите.
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:43  [ТС]
Я вижу, что вы размер файла вывели. Размер считывается и у меня правильно, а вот в buffer записывается только начало.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:47
Выводится количество того, что считано в buffer, а не размер файла. Установите текстовый режим и увидите совсем другое число. Вы уверены, что правильно смотрите buffer? Это же не текст читался, а байты. Что вы там хотите увидеть? Буковки?
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:48  [ТС]
Файл использую, который уже выложил, код написан в первом посте.

Добавлено через 28 секунд
Хотелось бы хотя бы буковки.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:50
И покажите код ZeroMemory(). Как вы там и что чистите?

Добавлено через 34 секунды
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
Файл использую, который уже выложил
В каком посте?

Добавлено через 44 секунды
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
Хотелось бы хотя бы буковки.
А вы знаете, что не все значения в байтах можно представить в виде буковок?
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:51  [ТС]
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
Вот изображение для примера
Attached Thumbnails
Вот пост
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 01:51
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
код написан в первом посте.
Код написан неправильно, там файл не в нужном режиме открывается.

Добавлено через 30 секунд
Цитата Сообщение от Vozyka Yaroslav Посмотреть сообщение
Вот пост
Номер у поста есть?
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
28.10.2013, 01:52  [ТС]
сделал sizeof(buffer)
в результате получил 4
Сейчас сделаю скриншот
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2013, 01:52
Помогаю со студенческими работами здесь

Ошибка Warning: fread() [function.fread]: Length parameter must be greater than 0
Есть строка кода if(!preg_match('/'.$user.&quot;/&quot;,fread($fusers,filesize(&quot;user/users.txt&quot;))) &amp;&amp; fread($fusers, 1) == 1){ Почему-то он...

Сокеты, отправить файл или текст с одного компьютера на другой
Здраствуйте! Скажите пожалуйста как с помощью сокетов отправить файл или текст с 1 компа на другой. Отправлял файл на своем компе с...

Как отправить сообщение по сети через терминал?
Доброго времени и суток! Я хотел спросить есть-ли какие нибудь отправить с 1 компа текстовое сообщение на другой пк (с помощью...

Fread неправильно считывает файл
У меня есть файл вот его скрин в hex редакторе я пытаюсь считать первые 8 байт, вот код: fread(&amp;formCk.ckID,4, 1, file_in);...

Бинарный файл не читается fread()
инициализированную структуру записываю в файл,хочу ее прочитать из файла и записать в другую структуру.Записывается в файл нормально,а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru