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

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

Войти
Регистрация
Восстановить пароль
 
Actimel
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
#1

В чем ошибка? Считать из файла и преобразовать символы в их коды. - C++

28.04.2012, 14:37. Просмотров 659. Ответов 9
Метки нет (Все метки)

Помогите пожалуйста, что не так у меня в коде.
Необходимо считать из файла и преобразовать символы в их коды.
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
28
29
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
        int i=0, amount=0;
        char* a;
        int* code;
        a=new char();
        code=new int;
        //------Считываем текст из файла---------
        //------И преобразуем в коды символов----
    cout<<"-----------------------------\n";
 
    FILE *file=fopen("d:\\file.txt", "r");
        while (!feof(file))
        {
            fread(&a, sizeof(char), 1, file);
            code[i] = a[i];
            cout << a[i] << " - ";
            cout << code[i++] << "\n";
            amount++; // кол-во символов в файле.
        }
    fclose(file);
    system ("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2012, 14:37     В чем ошибка? Считать из файла и преобразовать символы в их коды.
Посмотрите здесь:

C++ Считать символы из файла в массив
C++ вывести символы и их коды в столбик
C++ Считать текст из файла и определить, сколько в нем слов, состоящих из не более чем четырех букв
C++ Считать строку из txt-файла Unicode и преобразовать ее в число - это реально?
Считать символы из вектора в массив чаров C++
C++ Считать русские и английские символы с консоли
Как считать из файла символы и цифры одновременно? Структуры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6115 / 5718 / 1849
Регистрация: 18.12.2011
Сообщений: 14,608
Завершенные тесты: 1
28.04.2012, 15:45     В чем ошибка? Считать из файла и преобразовать символы в их коды. #2
Память выделена под ОДИН символ и под ОДНО число, поэтому
a[i] и code[i] - можно использовать только для i Равного нулю.
Actimel
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
28.04.2012, 15:50  [ТС]     В чем ошибка? Считать из файла и преобразовать символы в их коды. #3
Цитата Сообщение от zss Посмотреть сообщение
Память выделена под ОДИН символ и под ОДНО число, поэтому
a[i] и code[i] - можно использовать только для i Равного нулю.
а как сделать чтобы выделить не под один символ а под весь файл?
andy_111
90 / 59 / 2
Регистрация: 03.07.2011
Сообщений: 148
28.04.2012, 16:12     В чем ошибка? Считать из файла и преобразовать символы в их коды. #4
Как-то вот так
C++
1
2
3
4
5
fseek( file, 0, SEEK_END) ;
int nFileLen = ftell( file );
fseek( file, 0, SEEK_SET) ;
char * a=new char[nFileLen];
int * code=new int[nFileLen];
Actimel
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
28.04.2012, 16:15  [ТС]     В чем ошибка? Считать из файла и преобразовать символы в их коды. #5
Цитата Сообщение от andy_111 Посмотреть сообщение
Как-то вот так
C++
1
2
3
4
5
fseek( file, 0, SEEK_END) ;
int nFileLen = ftell( file );
fseek( file, 0, SEEK_SET) ;
char * a=new char[nFileLen];
int * code=new int[nFileLen];
а можете исправить прямо в моем коде как именно это будет выглядеть?
andy_111
90 / 59 / 2
Регистрация: 03.07.2011
Сообщений: 148
28.04.2012, 16:36     В чем ошибка? Считать из файла и преобразовать символы в их коды. #6
Как-то так. Сорри, билдера под рукой нет, проверить не могу.

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
28
29
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
        //------Считываем текст из файла---------
        //------И преобразуем в коды символов----
    cout<<"-----------------------------\n";
 
    FILE *file=fopen("d:\\file.txt", "r");
    fseek( file, 0, SEEK_END) ;
    int nFileLen = ftell( file );
    fseek( file, 0, SEEK_SET) ;
    char * a=new char[nFileLen];
    int * code=new int[nFileLen];
   fread(a, 1,nFileLen,file);
    fclose(file);
 
    for(int i = 0; i < nFileLen; i++){
        code[i] = a[i];
        cout << a[i] << " - ";
        cout << code[i] << "\n";
    }
 
   system ("pause");
}
Добавлено через 11 минут
А вообще, если вам нужен только вывод, массив code не обязателен. Попробуйте вот так :
C++
1
2
cout << a[i] << " - ";
cout << int(a[i]) << "\n";
Actimel
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
28.04.2012, 16:50  [ТС]     В чем ошибка? Считать из файла и преобразовать символы в их коды. #7
все нормально компилится только только у русских символов кот получается отрицательный например буква "т" вместо 242 выдает -14. И откуда то в конце файла берет еще русскую букву "Н".

Добавлено через 7 минут
русские символы я исправил:
C++
1
code[i]=(unsigned char)a[i];
а вот непонятно откуда взявшаяся "Н" не знаю как убрать

Добавлено через 1 минуту
Цитата Сообщение от andy_111 Посмотреть сообщение
А вообще, если вам нужен только вывод, массив code не обязателен.
он мне нужен для последующей обработки
andy_111
90 / 59 / 2
Регистрация: 03.07.2011
Сообщений: 148
28.04.2012, 16:56     В чем ошибка? Считать из файла и преобразовать символы в их коды. #8
Не понял. Предположим у вас файл длиной 10 байт, в нем хранится строка qwertyasdf. Что после обработки хранится в массивах?

Добавлено через 4 минуты
А насчет массива - я к тому, что у вас есть два параллельных массива, и в них хранятся одни и те же данные, только в переменных разных типов.
Actimel
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
28.04.2012, 16:59  [ТС]     В чем ошибка? Считать из файла и преобразовать символы в их коды. #9
Цитата Сообщение от andy_111 Посмотреть сообщение
Не понял. Предположим у вас файл длиной 10 байт, в нем хранится строка qwertyasdf. Что после обработки хранится в массивах?

Добавлено через 4 минуты
А насчет массива - я к тому, что у вас есть два параллельных массива, и в них хранятся одни и те же данные, только в переменных разных типов.
Например в файле написанно:
это текст
Hello

и вот рузультат работы программы:
Миниатюры
В чем ошибка? Считать из файла и преобразовать символы в их коды.  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2012, 17:00     В чем ошибка? Считать из файла и преобразовать символы в их коды.
Еще ссылки по теме:

Считать несколько символов (цифр) из файла и преобразовать их в число C++
C++ Вывести символы строки и их коды
Нужно считать с файла определенное число символов и эти символы удалить из файла C++
C++ Считать текст из файла и определить, сколько в нем слов из не более, чем 4-х букв

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

Или воспользуйтесь поиском по форуму:
Actimel
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
28.04.2012, 17:00  [ТС]     В чем ошибка? Считать из файла и преобразовать символы в их коды. #10
причем если в файле только одна строка то этого левого символа нет
Yandex
Объявления
28.04.2012, 17:00     В чем ошибка? Считать из файла и преобразовать символы в их коды.
Ответ Создать тему
Опции темы

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