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

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

Войти
Регистрация
Восстановить пароль
 
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
#1

Непонятная ошибка - C++

14.09.2012, 16:46. Просмотров 360. Ответов 4
Метки нет (Все метки)

Прошу помочь. Нижеприведенный фрагмент кода работает, генерирует ключ, варнингов нет. В дебаге все работает отлично, в релизе выдает ошибку если длина пароля больше 7 символов (причем проходит system("pause") и только потом выдает ошибку. Среда - MSVC 2010.

main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
#include "functions.h"
 
using namespace std;
 
int main(char *argc[], int argv)
{
    char* keyword = new char;
    cin>>keyword;
    unsigned char* key = createKey(keyword);
    printf("1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627282930\n");
    for(int i=0; i<30; i++)
        printf("%0X", key[i]);
    printf("\n");
    system("pause");
    return 0;
}
functions.h:
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
unsigned char* createKey(char* keyword)
{
    unsigned char* key = new unsigned char[30];
    for(int i=0; i<30; i++)
        key[i] = 5;
    for(int i=0; keyword[i]!=0; i++)
    {
        key[15*(i%2)] += keyword[i] * 25;
        key[15*(i%2)+1] += keyword[i] * 274;
        key[15*(i%2)+2] += keyword[i] * 12;
        key[15*(i%2)+3] += keyword[i] * 20;
        key[15*(i%2)+4] += keyword[i] * 357;
        key[15*(i%2)+5] += keyword[i] * 204;
        key[15*(i%2)+6] += keyword[i] * 4;
        key[15*(i%2)+7] += keyword[i] * 42;
        key[15*(i%2)+8] += keyword[i] * 26;
        key[15*(i%2)+9] += keyword[i] * 6;
        key[15*(i%2)+10] += keyword[i] * 84;
        key[15*(i%2)+11] += keyword[i] * 8;
        key[15*(i%2)+12] += keyword[i] * 23;
        key[15*(i%2)+13] += keyword[i] * 68;
        key[15*(i%2)+14] += keyword[i] * 80;
    }
    return key;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2012, 16:46     Непонятная ошибка
Посмотрите здесь:

C++ непонятная ошибка
Непонятная ошибка C++
C++ непонятная ошибка
Непонятная ошибка!? C++
C++ Непонятная ошибка
непонятная ошибка C++
Непонятная ошибка C++
Непонятная ошибка C++
непонятная ошибка C++
C++ непонятная ошибка
C++ Непонятная ошибка
Непонятная ошибка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algiz
160 / 160 / 13
Регистрация: 23.02.2011
Сообщений: 347
14.09.2012, 16:54     Непонятная ошибка #2
>> char* keyword = new char;
Лол, ты в курсе, что keyword у тебя длинной в один символ
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
14.09.2012, 17:19     Непонятная ошибка #3
veverix

у вас нет синтаксических ошибок. Ошибка логическая. Вот здесь.

char* keyword = new char;
cin>>keyword;


Вы выделяете память под ОДИН символ (это первая строка0
Во второй строке вы из страндартного потока ввода считаете этот символ в выделенную под него область
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
14.09.2012, 17:31  [ТС]     Непонятная ошибка #4
Благодарю. Странно, но обычно так работало и я думал что память под следующие символы выделяется автоматически.
Algiz
160 / 160 / 13
Регистрация: 23.02.2011
Сообщений: 347
16.09.2012, 15:42     Непонятная ошибка #5
используй std::string, если хочешь, что бы память выделялась автоматически
Yandex
Объявления
16.09.2012, 15:42     Непонятная ошибка
Ответ Создать тему
Опции темы

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