Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посмотреть 0 и 1. Есть ли такие проги? 
V
    Опции темы
JoeBlack
Дата 8.11.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 29.9.2006

Репутация: нет
Всего: нет



Доброе время суток!
Кажется не ошибаюсь с подтемой форумаsmile
Вопросик вот какой: есть ли программки, которые могут показывать содержимое файла не только в 16-ричной системе, но и в 2-й? Вот хочется, понимаешь, мне насладиться бесконечным рядом 0 и 1:). Ну и, конечно, как правильно они пишутся в свом названии...или где можно качнуть...
Спасибо за ответ!!!
PM MAIL   Вверх
dumb
Дата 8.11.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



с темой ошибся.

собери этот ужасный кусок и медитируй:
Код

  FILE *f=fopen("1.txt","rb");
  if (!f) return 1;
  while (true) {
    int c = fgetc(f);
    if (c==-1) break;
    printf("%d%d%d%d%d%d%d%d",(c>>7)&1,(c>>6)&1,(c>>5)&1,(c>>4)&1,(c>>3)&1,(c>>2)&1,(c>>1)&1,c&1);
  }
  fclose(f);
  printf("\n\nPress Enter...");
  gets(argv[0]);
  return 0;

PM MAIL   Вверх
JoeBlack
Дата 8.11.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 29.9.2006

Репутация: нет
Всего: нет



Спасибо!!
Как все просто..а я искал нечто градиозное
PM MAIL   Вверх
Kuvaldis
Дата 8.11.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



dumb, 
1. 
Код

fopen("1.txt","rb");

Ты открываешь файл в бинарном режиме, но используешь функции для работы с текстовыми. Не есть гуд: или уже используй fread(), или открывай в текстовом режиме (по правилу хорошего тона)

2.
Код

if (c==-1) break;

С точки зрения переносимости тоже не гуд. Это  в данный момент EOF = -1. Что будет потом, неизвестно. Лучше всегда использовать define - определения. Чтобы избежать возможных проблем.
3.
Код

gets(argv[0]);

Честно говоря, данную строчку не совсем понял...
ИМХО, лучше просто использовать system("pause") или getch()

по-моему нижеприведенный код будет более красивым и переносисым (не факт, что char всегда будет 1 байт smile 

Код

//----------------------------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
//----------------------------------------------------------------------------
int main(int argc, char* argv[])
{
  FILE* f;
  char  sym;
  int   size;   // current size of char in system
  char  temp;   // 10...0  - number with all 0, only 1 is first for system
                // if sizeof(char) = 1 byte - temp = 0x80 = 10000000
  f = fopen("1.txt", "r");
  if (!f) return 1;
  
  sym = fgetc(f);
  size = sizeof (char) * 8;

  temp = 1;  
  temp = temp << (size  - 1);  // 000...01 -> 100.....0
  
  while ( !feof(f) )
  {
    for (int i = 0; i < size; i++)
    {
       if (sym & temp)
          printf("1");
       else
          printf("0");     
       sym = sym << 1;
    }
    printf(" ");                     // для разделения представлений символов
    sym = fgetc(f);
  }
  
  fclose(f);
  puts("\n\nPress Enter...");
  gets(argv[0]);   // ?????
  system("pause");
  return 0;
}  
//----------------------------------------------------------------------------  


Это сообщение отредактировал(а) Kuvaldis - 8.11.2006, 19:04


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
dumb
Дата 9.11.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



Kuvaldis, честно говоря, не понимаю, что тебя сподвигло на критику...

Цитата(dumb @  8.11.2006,  10:36 Найти цитируемый пост)
собери этот ужасный кусок...


но, уж "коль пошла такая пьянка", поспорим немного...

Цитата(Kuvaldis @  8.11.2006,  18:25 Найти цитируемый пост)
Ты открываешь файл в бинарном режиме, но используешь функции для работы с текстовыми.

что такое "функции для работы с текстовыми"? ты знаешь на что влияет "бинарный режим"?
попутно замечу, что открыв файл в текстовом режиме, ты внес некую нелогичность в работу кода, с учетом того, что он выводит содержимое файла по-битно.

Цитата(Kuvaldis @  8.11.2006,  18:25 Найти цитируемый пост)

Код
gets(argv[0]);

Честно говоря, данную строчку не совсем понял...

чтобы не заводить специально массив для такого пустяка, использовал то, что подвернулось... getchar() тут лучше.

Цитата(Kuvaldis @  8.11.2006,  18:25 Найти цитируемый пост)
ИМХО, лучше просто использовать system("pause") или getch()

это правильно, что "ИМХО" smile getch() не использовал, потому как пришлось бы еще один include писать. ну а system("pause") - это вообще, на мой взгляд...

то, что ты написал в своем коде, в данном конкретном случае считаю излишним "наворачиванием" и неоправданными тормозами. и еще раз призываю прочесть вводную строчку к моему коду... smile

PM MAIL   Вверх
Kuvaldis
Дата 9.11.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



dumb, 
Цитата

Kuvaldis, честно говоря, не понимаю, что тебя сподвигло на критику...

Ты не обижайся smile, я ж не со злобы.
Вообще на написание своего варианта меня подбили 3 вещи:
1. Согласить, что чтение fread() как раз для бинарного режима, во-вторых, быстрее

2. 
Код

gets(argv[0]);

Не гуд.  Просто я знаю по себе, что когда привыкаешь к написанию таких быстрых вариантов, потом это начинает входить в привычку... порой незаметно
В данном случае возможно переполнение

3. if (c==-1) break;
За это у нас "отрезают руки" smile 

4. Бесконечный цикл - с точки зрения процедурного программирования не есть в ДАННОМ случае гуд (хотя и не смертельно)

5.
printf("%d%d%d%d%d%d%d%d",(c>>7)&1,(c>>6)&1,(c>>5)&1,(c>>4)&1,(c>>3)&1,(c>>2)&1,
(c>>1)&1,c&1)

Ну некрасивая строчка, согласись.

А там я в запале и больше написал...

Теперь по твоим замечаниям
1.
Цитата

system("pause") - это вообще, на мой взгляд...

На мой тоже, поэтому и привел вариант с getch() smile 

2.
Цитата

ты знаешь на что влияет "бинарный режим"?

В бинарном режиме нет преобразования '\n' в 10, 13.т.е.  биективное отображение. Тут с тобой соглашусь. следовало и мне открыть файл в бинарном режиме.

3. 
Цитата

и еще раз призываю прочесть вводную строчку к моему коду... 


Вот этого я и не заметил smile 
Сразу стал код смотреть  - привычка smile 
В общем, я думаю, что мы друг друга поняли, все довольны smile 
P.S. НО мой код красивей (+ возможность в модернизации...)

Это сообщение отредактировал(а) Kuvaldis - 9.11.2006, 14:20


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.