0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
1

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

28.04.2012, 14:37. Показов 921. Ответов 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");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2012, 14:37
Ответы с готовыми решениями:

Заполнить матрицу А[N,M] с файла символами, если символы повторяются в рядах то эти же символы заменить на их коды.
Заполнить матрицу А с файла символами, если символы повторяются в рядах то эти же символы заменить...

Дан массив S(50).Вывести те символы (и их коды), коды которых кратны 5 и определить их количество.
Дан массив S(50).Вывести те символы (и их коды), коды которых кратны 5 и определить их количество.

Нужно считать с файла определенное число символов и эти символы удалить из файла
Нужно считать с файла определенное число символов и эти символы удалить из файла

Получить в другом файле символы, коды которых соответствуют элементам исходного файла
1.С помощью датчика случайных чисел записать в файл некоторое количество чисел из отрезка.Получить...

9
Модератор
Эксперт С++
13430 / 10532 / 6294
Регистрация: 18.12.2011
Сообщений: 28,128
28.04.2012, 15:45 2
Память выделена под ОДИН символ и под ОДНО число, поэтому
a[i] и code[i] - можно использовать только для i Равного нулю.
0
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
28.04.2012, 15:50  [ТС] 3
Цитата Сообщение от zss Посмотреть сообщение
Память выделена под ОДИН символ и под ОДНО число, поэтому
a[i] и code[i] - можно использовать только для i Равного нулю.
а как сделать чтобы выделить не под один символ а под весь файл?
0
95 / 64 / 5
Регистрация: 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];
0
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];
а можете исправить прямо в моем коде как именно это будет выглядеть?
0
95 / 64 / 5
Регистрация: 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";
0
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 не обязателен.
он мне нужен для последующей обработки
0
95 / 64 / 5
Регистрация: 03.07.2011
Сообщений: 148
28.04.2012, 16:56 8
Не понял. Предположим у вас файл длиной 10 байт, в нем хранится строка qwertyasdf. Что после обработки хранится в массивах?

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

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

и вот рузультат работы программы:
Миниатюры
В чем ошибка? Считать из файла и преобразовать символы в их коды.  
0
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 43
28.04.2012, 17:00  [ТС] 10
причем если в файле только одна строка то этого левого символа нет
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2012, 17:00
Помогаю со студенческими работами здесь

Считать символы из файла
Есть предварительно созданный файл, считать его все символы

Считать символы из файла в массив
Всем привет. Нужно считать из файла символы и поместить их в массив. Разрешены только функции...

Считать символы из файла в массив
Пожалуйста. нужен код для реализации считывания символов из файла (.txt) в массив На С (и если не...

Считать символы из файла и вывести их в консоль
Программа должна считывать символы из файла и выводить их в консоль Файл test содержит текст...

Как считать из файла нестандартные символы
Всем доброго времени суток! Задача: необходимо считать из файла нестандартные символы, такие как...

Считать массив из файла и преобразовать его в матрицу
Из текстового файла считывается одномерный массив, как переделать чтобы считывался двумерный массив...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru