Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
4 / 4 / 1
Регистрация: 14.07.2012
Сообщений: 212
1

Аргумент типа "unsigned char*" несовместим с параметром типа "const char*"

12.11.2014, 23:47. Просмотров 3303. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
int f(unsigned char s[], unsigned char q[])
{
    N = strlen(s); //Ошибка тут...
    M = strlen(q); //...и тут
Как исправить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2014, 23:47
Ответы с готовыми решениями:

Найти причины возникновения ошибки: аргумент типа "const char *" несовместим с параметром типа "char *"
Есть вот такая функция: в файле test.h extern UFUNEXPORT int UF_print_syslog( char...

Ошибка: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
Здравствуйте я хочу запустить музыку в консоли с++, но мне выдает ошибку: аргумент типа "const char...

Аргумент типа "const char*" несовместим с параметром типа "LPCWSTR"
хочу запустить paint с visual studio но выдает ошибку под словами open, filename, строка 6#include...

Аргумент типа "const char *" несовместим с параметром типа "char *"
Sourse.cpp: #include <iostream> #include <conio.h> #include "Account.h" using namespace std;...

4
Комп_Оратор)
Эксперт по математике/физике
8613 / 4331 / 584
Регистрация: 04.12.2011
Сообщений: 12,932
Записей в блоге: 14
13.11.2014, 00:52 2
Григорий Карпов, зачем передавать массив по ссылке если внутри как с с-строкой работаете? Ведь если и правду массив (но не строка, а без терминатора) то плохо же будет. Объявите параметры как const char* например.
1
С чаем беда...
Эксперт CЭксперт С++
8279 / 4053 / 1114
Регистрация: 18.10.2014
Сообщений: 8,748
13.11.2014, 04:03 3
Цитата Сообщение от Григорий Карпов Посмотреть сообщение
Как исправить?
Что значит "как"? Это у вас надо спрашивать, зачем массивы объявлены, как 'unsigned char'. Объявите их как массивы 'char' и дело с концом.

А если все таки нужно по каким-то причнам именно 'unsigned char', то остается только насильно приводить типы указателей

C++
1
2
N = strlen((const char *) s);
M = strlen((const char *) q);
(ну или через 'reinterpret_cast').

Добавлено через 15 секунд
Цитата Сообщение от Григорий Карпов Посмотреть сообщение
Как исправить?
Что значит "как"? Это у вас надо спрашивать, зачем массивы объявлены, как 'unsigned char'. Объявите их как массивы 'char' и дело с концом.

А если все таки нужно по каким-то причнам именно 'unsigned char', то остается только насильно приводить типы указателей

C++
1
2
N = strlen((const char *) s);
M = strlen((const char *) q);
(ну или через 'reinterpret_cast').
1
4 / 4 / 1
Регистрация: 14.07.2012
Сообщений: 212
16.11.2014, 22:41  [ТС] 4
Я сделал так:
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
using namespace std;
 
int BM(unsigned char s[], unsigned char q[])
{
    int d[256];
    int i, j, k, N, M;
    N = strlen((const char *)s);
    M = strlen((const char *)q);
 
    for (i = 0; i < 256; i++)
    { d[i] = M; }
 
    for (i = 0; i < M - 1; i++)
    { d[(unsigned char)q[i]] = M - i - 1; }
 
    i = M - 1;
    do {
        j = M - 1;
        k = i;
 
        while (j >= 0 && q[j] == s[k])
        { k--; j--; }
 
        if (j < 0)
        { return k + 2; }
 
        i += d[(unsigned)s[i]];
    } while (i < N);
 
    return -1;
}
 
int main()
{
    unsigned char s[] = "", q[] = "";
 
    setlocale(0, "rus");
    cout << "Поиск подстроки методом Бойера-Мура" << endl << endl;
    cout << "Введите строку: ";
    cin >> s;
    cout << "Введите подстроку: ";
    cin >> q;
 
    cout << BM(s, q);
 
    cout << endl << endl;
    system("pause");
    return 0;
}

Программа работает правильно, но при её закрытии вылетает ошибка...
Run-Time Check Failure #2 - Stack around the variable 's' was corrupted.
0
Форумчанин
Эксперт CЭксперт С++
8161 / 5009 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
16.11.2014, 22:57 5
C++
1
2
const size_t size = 256;
unsigned char s[size] = "", q[size] = "";
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2014, 22:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка: "аргумент типа const char несовместим с параметром типа char*"
Существует много файловый проект на с++ 1)feed.cpp 2)feed.h 3)Source.cpp В файле feed.h...

"Аргумент типа char несовместим с параметром типа const char"
Программа должна перевести все символы до * в число,но что то пошло не так. P.S прошу не ругать....

Ошибка "значение типа "const char [81]" нельзя использовать для инициализации сущности типа "const unsigned char [61]"
Прошу помощи, так как раньше прога работала, сейчас решил вернуться и выдает ошибку: #pragma once...

Ошибка аргумент типа "char" несовместим с параметром типа "LPCSTR"
char result; result=printf(&quot;%d %d&quot;, &quot;test.php?id=&quot;,id); HINTERNET hHttpRequest = HttpOpenRequest(...


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

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

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