1 Востаннє редагувалося Programmer (10.12.2013 20:38:16)

Тема: Проблема з файлом

Зчитати дані з файлу та вивести його вміст на екран у 16 коді...
ось код: все ніби впорядку але вміст не переводить в 16 код за допомогою маніпулятора hex (С++)

#include <fstream>
#include "stdafx.h" 
#include <iostream>
 
using namespace std;

int main(array<System::String ^> ^args)
{
 char ch[50];
              ifstream file ("C:\\task.txt");
              while (!file.eof())
                 {
                     file.getline(ch, sizeof(ch)); 
                     cout  << hex  << ch << "\n" << endl;         
                 }
  file.close();

    cin.get();
    cin.get();

    return 0;
}

Hanter: Код слід брати у теги code

Поможіть...

2

Re: Проблема з файлом

Звісно, що не переводить. Виводьте в циклі по одному символу як число:

for(int i=0;i<strlen(ch);i++)
  cout << hex << int(ch) << endl;

так, і "\n" та endl - певним чином синоніми, визначайтеся із чимось одним (бажано endl).

Подякували: Programmer2

3 Востаннє редагувалося Programmer (10.12.2013 22:40:47)

Re: Проблема з файлом

char ch[50];
              ifstream file ("C:\\task.txt");
              while (!file.eof())
                {
                    file.getline(ch, sizeof(ch));
                       for(int i=0;i<strlen(ch);i++)
                       {
                           
                            cout << hex << int(ch) << endl;
                       }
                 }

Bartash: Не ігноруйте замітки модераторів. Після третього разу буде реальне попередження.

ось результат:

Post's attachments

Безымянный.png 55.89 kb, 230 downloads since 2013-12-10 

4

Re: Проблема з файлом

Так, вибачте, забув індекс...

cout << hex << int(ch[i]) << endl;

5

Re: Проблема з файлом

Вибачте за те , що турбую але проблема в тому , що все працює але коли зчитує напр число 10 воно мало б вивести на екран букву "а"  ,а зчитує і виводить як окремо дві цифри 1 = 31 і 0 = 30. В чому проблема ??
ось файл:

Post's attachments

Безымянный1.png 9.46 kb, 216 downloads since 2013-12-10 

6

Re: Проблема з файлом

Тпру... пригальмуйте. Давайте розбиратися в тому, що вам задали зробити.

Зчитати дані з файлу та вивести його вміст на екран у 16 коді...

Вміст файлу, щоб ви зрозуміли, знаходиться в чомусь близькому до 256-кового коду: кожен байт приймає одне з 256 різних значень. Найпростіше представити кожен байт як символ в якомусь кодуванні (наприклад, розширений ASCII). Оскільки 256=16^2, то досить зручно представляти байти як двозначні 16-кові числа, що і робить мій код.
А вам, як тепер виглядає, треба не вміст файла вивести, а 10-кове число, записане в файлі в кодуванні ASCII, перетворити в 16-кове. Ну то читайте числа, а не рядки, і буде вам щастя.

Подякували: Programmer1

7 Востаннє редагувалося Programmer (11.12.2013 20:52:13)

Re: Проблема з файлом

Могли б ви обяснити детальніше за це:

 strlen(r)  та за це: int(r[i])
for(int i=0;i<strlen(r);i++)
    cout  << hex << int(r[i])   << endl;

8

Re: Проблема з файлом

Для початку, давайте зрозуміємо, що:
- символ (char) і число в C++ - це одне й те саме, але функції вводу/виводу працюють із ними по-різному: так, якщо ви вводите 1 <Enter> 1 <Enter> такому шматку програми:

char c;
int i;
std::cin>>c>>i;

то матимете значення i - 1, а значення c - 49 (код цифри '1' в ASCII). Легко переконатися в цьому, наприклад, так:

cout << (c+i);

виведе 50.
- масив символів в класичному C (а відтак і в C++) виконує роль рядка (в C++ є і інші рядки); рядком вважається шматок масиву до символу з кодом 0 (його можна позначити як '\0'). strlen повертає довжину цього рядка. А int(r[ i]) явно перетворює значення з типу char на тип int, відтак, ми побачимо код символу, а не сам символ.

Подякували: Programmer1

9

Re: Проблема з файлом

Вибачте , що надокучаю але в мене нічого не виходить з тим щоб зчитати 11 як ціле число , а не як 1 та 1 я все перепробував

 int c = atoi (ch);

10 Востаннє редагувалося koala (11.12.2013 23:31:21)

Re: Проблема з файлом

Programmer написав:

Вибачте , що надокучаю але в мене нічого не виходить з тим щоб зчитати 11 як ціле число , а не як 1 та 1 я все перепробував

Ви все перепробували? А

int i;
file >> i;

теж?

11 Востаннє редагувалося Programmer (11.12.2013 23:39:06)

Re: Проблема з файлом

так ось результат

Post's attachments

12.png 3.41 kb, 160 downloads since 2013-12-11 

12 Востаннє редагувалося Programmer (11.12.2013 23:42:43)

Re: Проблема з файлом

 char ch[50];
       int g;
              ifstream file ("C:\\task.txt");
              while (!file.eof())
                {
                    file >> g;
                    file.getline(ch, sizeof(ch));
                       for(int i=0;i<strlen(ch);i++)
                       {
                           cout << g << " " << hex << int (ch[i]) << endl;
                       }   
                 }

ось і таке

Post's attachments

11.png 6.59 kb, 202 downloads since 2013-12-11 

13

Re: Проблема з файлом

Пане, результат ЧОГО? Ми не бачимо вашого коду телепатично, чесне слово.

14

Re: Проблема з файлом

Programmer написав:
 char ch[50];
       int g;
              ifstream file ("C:\\task.txt");
              while (!file.eof())
                {
                    file >> g;
                    file.getline(ch, sizeof(ch));
                       for(int i=0;i<strlen(ch);i++)
                       {
                           cout << g << " " << hex << int (ch[i]) << endl;
                       }   
                 }

ось і таке

Ви стверджуєте, що в файлі при цьому написано 11 і все?

15 Востаннє редагувалося Programmer (12.12.2013 00:04:58)

Re: Проблема з файлом

ні там :



я для прикладу написав 11

Post's attachments

Безымянный12.png 6.79 kb, 200 downloads since 2013-12-11