Error (При компиляции программа выдаёт ошибку.)

Модератор: Модераторы разделов

Aragul
Сообщения: 2
ОС: Windows 7 (sp1)

Error

Сообщение Aragul »

При компиляции пишет:
||=== Build: Debug in 1488 (compiler: GNU GCC Compiler) ===|
In function 'void xsearch()':
|163|error: invalid conversion from 'char' to 'char*' [-fpermissive]|
|357|error: initializing argument 1 of 'char* gets(char*)' [-fpermissive]|
|169||error: invalid types 'double[int]' for array subscript|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

Может кто объяснить, что не так?

Код:

void xsearch() { char arr; cout << "Введите название товара: "; gets(arr); for(int t = 0;t<=SIZE;t++) { for(int i = 0; i <= 40; i++) { if(!strcmp(invtry[t].cost[i],arr)) { display(t); } } } }
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5511
ОС: Gentoo

Re: Error

Сообщение /dev/random »

Основная ошибка здесь: "char arr;". Тип char - это однобайтовое число, а не строка. Вероятно, вы хотели выделить массив, например, "char arr[256];". Такой массив может содержать строку.

Есть и другие проблемы, не имеющие отношения к вашему вопросу.

Функция gets() устарела и использовать её не следует. Она не проверяет переполнение целевого массива и не позволяет программисту проверить вместо неё. Слишком длинная строка может быть записана не туда, куда вы хотели. Вместо gets() обычно используют fgets().

И наконец, почему вы мешаете плюсовый ввод-вывод с сишным? Раз уж вы используете C++, а не C, то почему бы не упростить себе жизнь и не воспользоваться плюсовыми безразмерными строками (string) вместо char[], а также cin вместо *gets()?


iУведомление от модератора
Тема перемещена из раздела "Программы" в раздел "Программирование".

Спасибо сказали:
Aragul
Сообщения: 2
ОС: Windows 7 (sp1)

Re: Error

Сообщение Aragul »

Спасибо, просто учу С++ по книге "С++ from the groun up THIRD EDITION" и, судя по всему, на тот момент она ещё не устарела (и про string там нет пока что)
Спасибо сказали: