Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
6 / 6 / 3
Регистрация: 22.09.2013
Сообщений: 166

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

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

Студворк — интернет-сервис помощи студентам
Недавно начал разбираться со строками и malloc,realloc . Ниже пытался описать программу для правильного выделения памяти строке. Показывает ошибку : 1>c:\users\Егор\documents\visual studio 2008\projects\translate\translate\asxd.c pp(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;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2014, 16:56
Ответы с готовыми решениями:

Невозможно преобразование int в double
#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 невозможно преобразование, в чем дело?
невозможно преобразовать аргумент 1 из &quot;const std::string&quot; в &quot;std::string &amp;&quot;

Преобразование типа невозможно
Товарищи можете помочь не могу разобраться, что от меня хочет MVS. Вроде как всё должно работать. Спасибо заранее. Ссылается на ошибку в 9...

17
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
06.01.2014, 16:57
Цитата Сообщение от кверти Посмотреть сообщение
if(quote[i] != "\0")
Нужны одинарные кавычки: if(quote[i] != '\0')
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
06.01.2014, 16:59
Кавычки вообще не нужны как и вся правая часть выражения:
C
1
2
if(quote[i]) temp+=1;
else break;
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.01.2014, 17:00
C++
1
quote = (char*) realloc(CONST_MEMORY,temp*sizeof(int));
quote - это имя массива, а не указатель
0
 Аватар для Alex566
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:01
Цитата Сообщение от кверти Посмотреть сообщение
realloc(CONST_MEMORY,temp*sizeof(int)
А почему под чар выделяется память как для инта? В инте 2 байта (в х32 системе) в чаре 1 байт.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.01.2014, 17:03
malloc, calloc и realloc - это хвосты от чистых сей, а не плюсы. Юзай new и не мучайся.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.01.2014, 17:03
C++
1
for (int i = 0 ;i <= CONST_MEMORY;i++)
будет выход за пределы массива. Поменяйте "<=" на "<"
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
06.01.2014, 17:03
Цитата Сообщение от Croessmah Посмотреть сообщение
quote - это имя массива, а не указатель
А имя массива - не указатель? О_о
0
6 / 6 / 3
Регистрация: 22.09.2013
Сообщений: 166
06.01.2014, 17:04  [ТС]
Спасибо тем кто отписался об моих ошибках. Подскажите как поправить realloc.
0
 Аватар для Alex566
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:04
Вообще в таком случае нужно создавать строку так:
char *quote;
quote=(char*)malloc(sizeof(char)*CONST_M EMORY);
...
free (quote);//Удаление в конце программы
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.01.2014, 17:04
Цитата Сообщение от 0x10 Посмотреть сообщение
А имя массива - не указатель? О_о
может быть интерпретирован как константный указатель
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.01.2014, 17:05
Цитата Сообщение от Alex566 Посмотреть сообщение
А почему под чар выделяется память как для инта? В инте 2 байта (в х32 системе) в чаре 1 байт.
Ваще то под char положено выделять, как для самого char и sizeof при этом брать только от char.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.01.2014, 17:05
Alex566, malloc и delete?
Может всё-таки free тогда использовать для освобождения или new для выделения?
malloc/free
new/delete
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
06.01.2014, 17:06
Alex566, а вот смешивать malloc и delete явно плохая идея.

Добавлено через 51 секунду
Цитата Сообщение от Croessmah Посмотреть сообщение
может быть интерпретирован как константный указатель
Да, я проглядел как он объявлен.
0
 Аватар для Alex566
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:09
Цитата Сообщение от Croessmah Посмотреть сообщение
Alex566, malloc и delete?
Да опечатка извинаюсь =)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.01.2014, 17:13
Цитата Сообщение от 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])
.
0
 Аватар для Alex566
244 / 155 / 48
Регистрация: 03.04.2013
Сообщений: 317
06.01.2014, 17:27
Цитата Сообщение от кверти Посмотреть сообщение
for (int i = 0 ;i <= CONST_MEMORY;i++)
* * {
* * * * if(quote[i] != "\0") temp+=1;
* * * * else break;
* * }
И кстати функция strlen(quote) вернет вам количество символов в строке до 0.
0
6 / 6 / 3
Регистрация: 22.09.2013
Сообщений: 166
06.01.2014, 17:51  [ТС]
Цитата Сообщение от Alex566 Посмотреть сообщение
И кстати функция strlen(quote) вернет вам количество символов в строке до 0.
да я в курсе. Просто практиковал через циклы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.01.2014, 17:51
Помогаю со студенческими работами здесь

Преобразование planet и int невозможно
Есть примерно такой код, но свитч ругается что преобразование planet и int невозможно, но ведь planet.sun это и есть int, в чем же дело? ...

Преобразование типа string в char невозможно
Выдает на этих двух фрагментов эту ошибку - &quot;\08&quot;. Помогите как можно исправить? public void Edit1KeyPress(System.Object...

Ошибка: преобразование char в string невозможно
Задача такова, написать прогу на WinForm чтобы: Надрукувати слова, які складаються з перших та останніх літер (але не цифр) усіх слів...

Обобщения. Неявное преобразование типа невозможно
Вылетает ошибка: Неявное преобразование типа &quot;T &quot; в &quot;T&quot; невозможно. Почему так нельзя? class Test&lt;T&gt; { T...

Преобразование типа int в тип bool невозможно
помогите плиз: int resultAB; resultAB=inputB-inputA; if (resultAB)&gt;(2*inputE) { ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru