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

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

Войти
Регистрация
Восстановить пароль
 
кверти
4 / 4 / 1
Регистрация: 22.09.2013
Сообщений: 154
Завершенные тесты: 2
#1

Невозможно преобразование - C++

06.01.2014, 16:56. Просмотров 325. Ответов 17
Метки нет (Все метки)

Недавно начал разбираться со строками и malloc,realloc . Ниже пытался описать программу для правильного выделения памяти строке. Показывает ошибку : 1>c:\users\Егор\documents\visual studio 2008\projects\translate\translate\asxd.cpp(17) : error C2446: !=: нет преобразования 'const char *' в 'int'


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
#include<stdio.h>
#include<iostream>
#include<windows.h>
#define CONST_MEMORY 100
 
int main()
{
    setlocale(0,"");
    char quote[CONST_MEMORY];
    int temp = 0;
 
    printf("Введите строку: ");
    scanf("%s",&quote);
 
    for (int i = 0 ;i <= CONST_MEMORY;i++) 
    {
        if(quote[i] != "\0") temp+=1;
        else break;
    }
 
    quote = (char*) realloc(CONST_MEMORY,temp*sizeof(int));
    system("pause");
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 16:56     Невозможно преобразование
Посмотрите здесь:

Невозможно преобразование int в double - C++
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;locale.h&gt; using namespace std; #define k 6 #define l 8 ...

Auto n.first невозможно преобразование, в чем дело? - C++
невозможно преобразовать аргумент 1 из &quot;const std::string&quot; в &quot;std::string &amp;&quot;

.h Невозможно открыть - C++
Помогите плз. Visual Studio стал выводить что невозможно открыть .h файл. Там у меня пол программы было. Кажется файл повреждён. Возможно...

Невозможно преобразовать - C++
Как пофиксить?

Невозможно открыть файл - C++
Есть несколько файлов: 1.txt, 2.txt, 3.txt. Файла 4.txt не существует. Проблема в том что когда я циклически пытаюсь открывать все файлы то...

Невозможно редактировать иконку - C++
Не получается рисовать на иконке средствами VS 2008. А именно на 32ух битных. Это проблема моих кривых рук или неподдержка альфа-канала для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,011
06.01.2014, 16:57     Невозможно преобразование #2
Цитата Сообщение от кверти Посмотреть сообщение
if(quote[i] != "\0")
Нужны одинарные кавычки: if(quote[i] != '\0')
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23228 / 15219 / 4417
Регистрация: 22.10.2011
Сообщений: 27,054
Записей в блоге: 4
06.01.2014, 16:59     Невозможно преобразование #3
Кавычки вообще не нужны как и вся правая часть выражения:
C
1
2
if(quote[i]) temp+=1;
else break;
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
06.01.2014, 17:00     Невозможно преобразование #4
C++
1
quote = (char*) realloc(CONST_MEMORY,temp*sizeof(int));
quote - это имя массива, а не указатель
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:01     Невозможно преобразование #5
Цитата Сообщение от кверти Посмотреть сообщение
realloc(CONST_MEMORY,temp*sizeof(int)
А почему под чар выделяется память как для инта? В инте 2 байта (в х32 системе) в чаре 1 байт.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.01.2014, 17:03     Невозможно преобразование #6
malloc, calloc и realloc - это хвосты от чистых сей, а не плюсы. Юзай new и не мучайся.
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
06.01.2014, 17:03     Невозможно преобразование #7
C++
1
for (int i = 0 ;i <= CONST_MEMORY;i++)
будет выход за пределы массива. Поменяйте "<=" на "<"
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,011
06.01.2014, 17:03     Невозможно преобразование #8
Цитата Сообщение от Croessmah Посмотреть сообщение
quote - это имя массива, а не указатель
А имя массива - не указатель? О_о
кверти
4 / 4 / 1
Регистрация: 22.09.2013
Сообщений: 154
Завершенные тесты: 2
06.01.2014, 17:04  [ТС]     Невозможно преобразование #9
Спасибо тем кто отписался об моих ошибках. Подскажите как поправить realloc.
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:04     Невозможно преобразование #10
Вообще в таком случае нужно создавать строку так:
char *quote;
quote=(char*)malloc(sizeof(char)*CONST_MEMORY);
...
free (quote);//Удаление в конце программы
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
06.01.2014, 17:04     Невозможно преобразование #11
Цитата Сообщение от 0x10 Посмотреть сообщение
А имя массива - не указатель? О_о
может быть интерпретирован как константный указатель
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.01.2014, 17:05     Невозможно преобразование #12
Цитата Сообщение от Alex566 Посмотреть сообщение
А почему под чар выделяется память как для инта? В инте 2 байта (в х32 системе) в чаре 1 байт.
Ваще то под char положено выделять, как для самого char и sizeof при этом брать только от char.
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
06.01.2014, 17:05     Невозможно преобразование #13
Alex566, malloc и delete?
Может всё-таки free тогда использовать для освобождения или new для выделения?
malloc/free
new/delete
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,011
06.01.2014, 17:06     Невозможно преобразование #14
Alex566, а вот смешивать malloc и delete явно плохая идея.

Добавлено через 51 секунду
Цитата Сообщение от Croessmah Посмотреть сообщение
может быть интерпретирован как константный указатель
Да, я проглядел как он объявлен.
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:09     Невозможно преобразование #15
Цитата Сообщение от Croessmah Посмотреть сообщение
Alex566, malloc и delete?
Да опечатка извинаюсь =)
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.01.2014, 17:13     Невозможно преобразование #16
Цитата Сообщение от 0x10 Посмотреть сообщение
А имя массива - не указатель? О_о
Нет.
C++
1
2
3
4
short int a[100];
short int *p;
std::cout<<sizeof(a)<<std::endl;
std::cout<<sizeof(p)<<std::endl;
выведет 200 и 4. Массив лишь ассоциирован с указателем на нулевой элемент и во всех случаях, когда не важен размер всего массива, имя массива заменяется указателям, так как физически массив на указателе и реализован. Но всё таки это не указатель, что позволяет вычислять размер массива в элементах так:
C++
1
sizeof(a)/sizeof(a[0])
.
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:27     Невозможно преобразование #17
Цитата Сообщение от кверти Посмотреть сообщение
for (int i = 0 ;i <= CONST_MEMORY;i++)
* * {
* * * * if(quote[i] != "\0") temp+=1;
* * * * else break;
* * }
И кстати функция strlen(quote) вернет вам количество символов в строке до 0.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 17:51     Невозможно преобразование
Еще ссылки по теме:

Невозможно преобразовать прараметр - C++
Наверняка щас прослыву ацким нубом, но вот програмка #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; class Priamoug ...

невозможно преобразовать параметр - C++
Добрый день. Имеется такой код для поиска и замены в РичТекстБокс: private: System::Void button5_Click(System::Object^ sender,...

Невозможно преобразовать параметр - C++
Пишу сканер. Пока консольный, потом планирую перевести на форму. Все практически готово. Загвоздка только в следующем. Никак не...

Невозможно преобразовать параметры - C++
Похожие темы не кидайте. уже их видел. но ничего не понял=). Человек вводит символ &gt;, &lt;, =. и нужно что бы если эти строки...


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

Или воспользуйтесь поиском по форуму:
кверти
4 / 4 / 1
Регистрация: 22.09.2013
Сообщений: 154
Завершенные тесты: 2
06.01.2014, 17:51  [ТС]     Невозможно преобразование #18
Цитата Сообщение от Alex566 Посмотреть сообщение
И кстати функция strlen(quote) вернет вам количество символов в строке до 0.
да я в курсе. Просто практиковал через циклы.
Yandex
Объявления
06.01.2014, 17:51     Невозможно преобразование
Ответ Создать тему
Опции темы

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