Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
SergijKazmiruk
0 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 2
1

Переход между указателями char*, const char*

09.03.2019, 18:44. Просмотров 160. Ответов 2

Имею уже две подготовленные функции:

C
1
2
char* reverse(const char* text);
char* vigenere_encrypt(const char* key, const char* text);
и нужно зделать еще одну, которая результат выполнения первой функции направит во вторую функцию. А в конце выведет уже готовый результат.

C
1
2
3
4
5
6
7
8
void bmp_encrypt(const char* key, const char* text)
{
    char* reversed = reverse(text);
    char* encrypted = vigenere_encrypt(key, (const char*)reversed);
    printf("%s\n", encrypted);
}
 
bmp_encrypt("CompuTeR", "Hello world!");
В результате исполнение етого кода получаю ошибку адресации памяти.
В чем тут может быть проблема? Уже не в силах здесь экспериментировать ... и искать ошибку.

Добавлено через 10 минут
Добавлю еще код этих функций
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
43
44
45
46
47
48
49
50
51
52
53
54
char* reverse(const char* text)
{
    char* dest = calloc(strlen(text) + 1, sizeof(char));
    char* ptr = dest;
    
    for(int i = 0; i < strlen(text); i++)
    {
        *(ptr + strlen(text) - i - 1) = toupper(*(text + i));
    }   
    
    return dest;
}
 
char* vigenere_encrypt(const char* key, const char* text)
{
    
    char* dest_key = calloc(strlen(text) + 1, sizeof(char));
    char* ptr_key = dest_key;
    
    char* dest_text = calloc(strlen(text) + 1, sizeof(char));
    char* ptr_text = dest_text;
    
    char* dest_code = calloc(strlen(text) + 1, sizeof(char));
    
    while(*key != '0')
    {
        *ptr_key++ = tolower(*key++);
    }
    
    while(*text != '0')
    {
        *ptr_text++ = tolower(*text++);
    }   
    
    for(int i = 0, k = 0; i <= (strlen(dest_text) + 0); i++, k++)
    {
        if(k == strlen(dest_key))
        {
            k = 0;
        }
        if(isalpha(dest_text[i]))
        { 
            dest_code[i] = dest_key[k];
            dest_code[i] = toupper((dest_text[i] + dest_code[i] - 2 * 'a') % 26 + 'a');
        }
        else
        {
            dest_code[i] = dest_text[i];
            k--;
        }
    }
 
    return dest_code;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2019, 18:44
Ответы с готовыми решениями:

Переход с 10 на 17 Студию 2440 =: невозможно преобразовать "const char [2] в char*
Доброго Нового года! Через пару дней сдавать контрольную работу, которую сделал ещё вначале...

CONST_RETURN char *__cdecl strstr (const char *_Str, const char *_SubStr)
#include &lt;stdio.h&gt; #include &lt;string.h&gt; char tracks = { &quot;ya ostavil svoe serdce v harvardskom...

Ошибка в коде: несовместимы типы операндов (char и const char)
Текст не содержит знаков препинания и набран одинаковым шрифтом. Составить программу определения...

Const char нельзя присвоить сущность типа char
Здравствуйте! Начинаю изучать Си И вот у меня немного не получается написать свою первую...

Приведение char (*) [N] к const char (*) [N]
Как вообще сделать такую вещь правильно? Скажем, завёл я массив из N символов: char arr;...

2
prik
278 / 182 / 60
Регистрация: 01.03.2011
Сообщений: 493
09.03.2019, 18:50 2
25я и 30я строки '0' != '\0' != 0
0
SergijKazmiruk
0 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 2
09.03.2019, 19:23  [ТС] 3
По отдельности ети две функции абсолютно робочие
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2019, 19:23

"const char *" нельзя использовать для инициализации сущности типа "char"
/* /* Написать программу, которая показывает реальное время в выбранных городах мира. Программа...

Error cannot convert 'int*' to 'const char*'
Сама задача: Описать структуру с именем NOTE, содержащую следующие поля: -фамилия, имя; -номер...

Too many arguments to function `int puts (const char*)'
Не получается скомпилировать код(компилятор dev c++).Открывает новую вкладку Stdio.h и выдает...


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

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

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