Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
a91
4 / 4 / 0
Регистрация: 03.04.2009
Сообщений: 190
#1

Считать мусор из файла - C++

03.06.2011, 15:14. Просмотров 833. Ответов 10
Метки нет (Все метки)

Здравствуйте!!!

Мне нужно вывести на экран любой файл, который я открыл. И не важно знать его структуру,
пусть выведет мусор, но хоть выведет ))

Загвоздка в том, что у меня выводятся на экран только текстовые файлы, а я хочу картинки, экзешники, вообщем любые другие расширения

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
26
27
#include <stdio.h>
#include <conio.h>
 
int main()
{
 char c,*s=new char[1000000]; 
 int i,l;  
 FILE *f;
 ///////////////////////////////
 f=fopen("f.txt","rb");
 
 i=0; 
 while(1)
 {
  l = fread(&c, sizeof(unsigned char), 1, f);
  if (l < 1) break;
  else s[i]=c;
  i++;
 }
 s[i-1]='\0';
  
 ////////////////////////////////
 printf("%s",s); 
 fclose(f); 
  
 getch(); return 0; 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,248
Завершенные тесты: 2
03.06.2011, 16:11     Считать мусор из файла #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <fstream>
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    char path[256]={0};
    char s;
    cout<<"Enter file path: ";
    cin.getline(path,255);
    ifstream input(path, ios::in);
    if(!input)
    {
        cout<<"Cannot open file for display!"<<endl;
    }
    while(!input.eof())
    {
        input.get(s);
        cout<<s;
    }
    input.close();
    return 0;
}
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.06.2011, 16:36     Считать мусор из файла #3
a91, printf(%s) работает только со строковым типом данных, а так как в бинарных файлах много нулей и просто непечатаемых символов, то ничего и не получается. Вам надо выбрать один вариант из двух, то есть можно выводить каждый байт как число, а можно как символ. Для бинарных файлов я бы выбрал первый вариант. То есть Вам надо в цикле, до конца файла выводить числа. Примерно так:

C
1
2
3
4
5
6
7
8
9
10
unsigned char buffer[256] = { 0 };
size_t readed = 0;
FILE *pfile;
 
/* TODO: open file in binary read mode */
 
while((readed = fread(buffer, 1, 256, pfile)) > 0) {
     for(i = 0; i < readed; ++i)
         printf("%2x ", buffer[i]);
}
a91
4 / 4 / 0
Регистрация: 03.04.2009
Сообщений: 190
04.06.2011, 20:03  [ТС]     Считать мусор из файла #4
Ну-ка...

Нормально считалось? (2 скрина ниже)
1. bmp-файл
2. rar-файл

То, что пробелы есть нормально?
Миниатюры
Считать мусор из файла   Считать мусор из файла  
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
05.06.2011, 17:27     Считать мусор из файла #5
Цитата Сообщение от a91 Посмотреть сообщение
То, что пробелы есть нормально?
Пробелы это и есть непечатаемые символы. Чтобы проверить корректность, откройте эти же файлы в любом HEX-редакторе и сравните
a91
4 / 4 / 0
Регистрация: 03.04.2009
Сообщений: 190
05.06.2011, 17:30  [ТС]     Считать мусор из файла #6
Хм.. не понимаю, что сказать. Вот.. то, что я открыл эти файл не в HEX-редакторе, и они отобразились так, это нормально?
Nameless One
05.06.2011, 17:43
  #7

Не по теме:

a91, ты ожидал, что оно у тебя выведет в консоль картинку или содержимое архива в удобочитаемой форме?

a91
4 / 4 / 0
Регистрация: 03.04.2009
Сообщений: 190
05.06.2011, 21:33  [ТС]     Считать мусор из файла #8
Nameless One, нет)), я не это имел ввиду, я хочу спросить он мусор этот правильно вывел?
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
06.06.2011, 01:39     Считать мусор из файла #9
a91, а что значит - "правильно вывел"?
a91
4 / 4 / 0
Регистрация: 03.04.2009
Сообщений: 190
06.06.2011, 09:12  [ТС]     Считать мусор из файла #10
Я имею ввиду то, что этот мусор нормально выглядит?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 13:03     Считать мусор из файла
Еще ссылки по теме:

Считать из файла C++
C++ Считывание из текстового файла. Считывает мусор без остановки
C++ Мусор при чтении файла
Нужно считать с файла определенное число символов и эти символы удалить из файла C++
C++ Считать из файла в структуру

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
06.06.2011, 13:03     Считать мусор из файла #11
a91, а тут сложно говорить. Если программа работает правильно, то она выведет мусор. Если неправильно - то тоже, скорее всего, мусор. Попробуй просмотреть файл консольными утилитами (cat в *nix, copy в windows) и сравнить его содержимое с выдачей твоей программы.
Yandex
Объявления
06.06.2011, 13:03     Считать мусор из файла
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru