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

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

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

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

28.04.2012, 14:37. Просмотров 675. Ответов 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++
Пожалуйста. нужен код для реализации считывания символов из файла (.txt) в массив На С (и если не трудно, то и на С++) Спасибо

Считать несколько символов (цифр) из файла и преобразовать их в число - C++
Предположим у меня есть массив, в котором у первого элемента значение 1, у второго значение 2, у третьего значение 3.Так вот как сделать...

Как считать из файла символы и цифры одновременно? Структуры - C++
Имеется файл txt с таким заполнением: Gingi 25 12 1 Klinl 36 74 1 Frogo 963 32 2 Hlolo 69 85 1 Frodo 369 42 2 Ringo 951 43 1 ...

Считать строку из txt-файла Unicode и преобразовать ее в число - это реально? - C++
Допустим у вас в txt-файле несколько чисел: 309 5 512 Если бы файл был в кодировке ANSI: 1) Вы считали строчку с помощью...

Считать текст из файла и определить, сколько в нем слов из не более, чем 4-х букв - C++
Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех буквами.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6358 / 5922 / 1919
Регистрация: 18.12.2011
Сообщений: 15,219
Завершенные тесты: 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

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

Считать текст из файла и определить, сколько в нём слов, состоящих из не более чем четырёх букв - C++
Нужно написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех букв. Не...

Считать текст из файла и определить, сколько в нем слов, состоящих из не более чем четырех букв - C++
Здравствуйте! Помогите плиз ! Очень срочно ! Написать программу, которая считывает текст из файла и определяет,сколько в нем...

В файл записываются непонятные символы? В чем ошибка? И как ее можно исправить? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;Windows.h&gt; #include &lt;locale&gt; using namespace std; const...

вывести символы и их коды в столбик - C++
Ввести строку S. Вывести в столбик символы и их коды для этой строки.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.04.2012, 17:00
Ответ Создать тему
Опции темы

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