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

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

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

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

06.01.2014, 16:56. Просмотров 327. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Невозможно преобразование (C++):

Невозможно преобразование 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;

Преобразование типа или преобразование типа указателя ? - C++
Добрый день. Помогите пожалуйста понять что делает вот эта команда: out.write ((char *) &amp;n, sizeof n); Она что, перед записью в файл...

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

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

Чтение памяти невозможно - C++
Ребята помогите, не понимаю где ошибка вот весь код #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;map&gt; #include &lt;list&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
06.01.2014, 16:57 #2
Цитата Сообщение от кверти Посмотреть сообщение
if(quote[i] != "\0")
Нужны одинарные кавычки: if(quote[i] != '\0')
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23388 / 15379 / 4527
Регистрация: 22.10.2011
Сообщений: 27,339
Записей в блоге: 4
06.01.2014, 16:59 #3
Кавычки вообще не нужны как и вся правая часть выражения:
C
1
2
if(quote[i]) temp+=1;
else break;
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 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Эксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
06.01.2014, 17:03 #7
C++
1
for (int i = 0 ;i <= CONST_MEMORY;i++)
будет выход за пределы массива. Поменяйте "<=" на "<"
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
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Эксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 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Эксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
06.01.2014, 17:05 #13
Alex566, malloc и delete?
Может всё-таки free тогда использовать для освобождения или new для выделения?
malloc/free
new/delete
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
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?
Да опечатка извинаюсь =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 17:09
Привет! Вот еще темы с ответами:

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

Невозможно открыть файл - C++
/* Программа. Распечатать все строки данного файла, содержащие заданную строку в качестве подстроки. Имя файла и строка задаются...

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.01.2014, 17:09
Ответ Создать тему
Опции темы

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