Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 1
Регистрация: 20.02.2013
Сообщений: 20

Получение кода символа

21.04.2013, 16:05. Показов 1537. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Написал программу для чтения файла, тут суть какая читает оно каждый символ в динамический массив, мне нужно как-то получать ANSI код каждого символа. Вот то, что как раз выводит printf("%d ",mas[i]). Т.е. допустим символ "a" это "97", "b" - "98" и т.д.. Короче порядковый номер в ANSI 1251. Вот сама таблица.
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
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
int main()
{
    //читаем файл
    const int step=10; // чтобы не каждый шаг перевыделять память
    char *mas;int i=0, n=step; // i - текущий индекс, n - длина массива
    FILE *in;
    if ((in=fopen("temp.txt","r")) ==NULL)
    {
        printf("Error with open file\n");
        return 1;
    }
    mas=malloc(n*sizeof(char));
    while (!feof(in))
    {
        if ((mas[i] = fgetc(in)) != EOF)//fscanf(in,"%s", mas+i)!= EOF)
        {
            i++;
            if (i>=n)
            {
                n+=step;
                mas=realloc(mas, n*sizeof(char)); //перевыделяем память
            }
        }
    }
    n=i;
    mas=realloc(mas, n*sizeof(char));
    for (i = 0; i < n; i++) printf("%d ",mas[i]);
    printf("\n");
    fclose(in);
    free(mas);
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2013, 16:05
Ответы с готовыми решениями:

Получение кода символа
Уважаемые Форумчанине) я создал эту темя для того, что бы по мере прохождения книги по С++, я мог задавать здесь вопросы которые меня...

Получение символа из кода unicode
Помогите найти такую функцию. Пихаешь &quot;1087&quot;, получаешь &quot;п&quot;

Получение кода символа в unicode
Есть специальная функция? Загоняешь &quot;п&quot;, получаешь &quot;1087&quot;. Желательно из коробки, ибо прописывать для каждого символа свой код - долго, и...

7
касаткО
 Аватар для Jetu
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
21.04.2013, 17:46
что значит получить ANSI код ? Вы это и так уже сделали:
C
1
printf("%d ",mas[i]);
P.S. Объясните получше, что именно вы хотите сделать.
0
1 / 1 / 1
Регистрация: 20.02.2013
Сообщений: 20
21.04.2013, 19:19  [ТС]
Что-то на подобие этого
C
1
2
int buf[n];
for(i=0;i<n;i++) buf[i]=mas[i];
Только в buf должны копироваться не символы, а именно код символа, т.е. допустим mas[0] = a, тогда buf[0] должно быть равно 97.
0
касаткО
 Аватар для Jetu
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
21.04.2013, 19:37
ну по идеи это должно работать
C
1
2
3
int a;
char c = 'a';
a = c; //в a будет 97
1
1 / 1 / 1
Регистрация: 20.02.2013
Сообщений: 20
21.04.2013, 20:24  [ТС]
А что будет, если с = '1'?
И ещё в чём разница между " " и ' ', я гуглил но ничего не нашёл.
0
касаткО
 Аватар для Jetu
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
21.04.2013, 20:47
Цитата Сообщение от lllypyn Посмотреть сообщение
А что будет, если с = '1'?
И ещё в чём разница между " " и ' ', я гуглил но ничего не нашёл.
ну если
C
1
с = '1'
то в а будет 49, у вас с - это символ и не важно что там '1' или 'z'.
ну одинарные ковычки это символ, двойные - строка.
1
1 / 1 / 1
Регистрация: 20.02.2013
Сообщений: 20
21.04.2013, 21:40  [ТС]
Я нашел это, все таки должно быть unsigned char.
Если char определён как signed (знаковый), то его диапазон значений составляет от −127 до 127 (на единицу дальше в положительную или отрицательную сторону, в зависимости от реализации). Если он определён как unsigned (беззнаковый), то его значения могут составлять от 0 до 255. Значение, содержащееся в этом типе, можно всегда безопасно привести к значению типа int.
...Но возможен один нюанс - в зависимости от машинной реализации типа char при преобразовании char в int может получиться отрицательное число, потому рекомендуется использовать явное преобразование, а если все-таки есть преобразования типа char в int, char объявлять как беззнаковый(unsigned char).
1
 Аватар для activnaya
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
24.04.2013, 03:41
Цитата Сообщение от lllypyn Посмотреть сообщение
Я нашел это, все таки должно быть unsigned char
в принципе это совсем не важно, поскольку значимые символы печати пронумерованы < 127. Вы немного не понимаете сущности. Символы и есть коды, выводятся они на печать так, как мы их укажем, т.е. один и тот же байт можно напечатать и как букву и как восьмеричный/десятичный/хекс код. Вот примерчик и его вывод.

Кликните здесь для просмотра всего текста
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
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <string.h>
 
#define CHAR_MODE 1
#define DEC_MODE 2
#define OCT_MODE 4
#define HEX_MODE 8
 
#define MODE_OUTPUT(var, len, format)               \
    do {                                            \
        while (len--)                               \
            printf( (#format " "), (var[len]));     \
    } while (0)
 
void foo (const char *s, size_t len, size_t mode)
{
    char ch;
    
    switch (mode)
    {
        case CHAR_MODE: MODE_OUTPUT(s, len, %c ); break;
        case DEC_MODE: MODE_OUTPUT(s, len, %d ); break;
        case OCT_MODE: MODE_OUTPUT(s, len, %o ); break;
        case HEX_MODE: MODE_OUTPUT(s, len, %x ); break;
        default: return;
    }
    
    putchar('\n');
}
 
int main ()
{
    char str[] = "string"; //длина 6 байт + 1 нулевой байт
    size_t len = strlen (str);
    
    foo (str, len, CHAR_MODE);
    foo (str, len, OCT_MODE);
    foo (str, len, DEC_MODE);
    foo (str, len, HEX_MODE);
    
    return 0;
}

Кликните здесь для просмотра всего текста
Code
1
2
3
4
g n i r t s 
147 156 151 162 164 163 
103 110 105 114 116 115 
67 6e 69 72 74 73

Этот топик не в той ветке.

Добавлено через 7 минут
в теме про ANSI 1251, а я про ASCII написала... Принцип тот же, только кодировки не однобайтовые.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2013, 03:41
Помогаю со студенческими работами здесь

получение из кода клавиши клавиатуры символа
как перевести численное значение клавиши клавиатуры в символ с учетом раскладки и регистра? есть идея делать так if {язык=рус}...

Получение кода символа используя Scasb
Можно ли при помощи Scasb записать в ebx номер второго символа ascii строки? В нете посмотрел, что он вроде-бы должен храниться в al, но я...

Получение символа по юникод-коду символа
Добрый день. Скажите, есть ли Win32 API функция для получения символа по юникод-коду символа? Например есть такой юникод-код символа:...

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

Преобразование кода символа в изображение символа
Написать объектно-ориентировануюю программу,осуществляющую преобразование кода символа в изображение символа. например какую-либо кнопку...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru