Не получается записать то, что выходит из массива в переменную

203
24 апреля 2018, 02:57

Хочу записать в переменную то, что получается в цикле.

char buff[50];
char str;       
for (int i = 0; i < strlen(buff); i++){
    if (buff[i] >= '0' && buff[i] <= '9')
         strcat( str,buff[i]);                  
}
cout << str;

Выдает ошибку:"аргумент типа char не совместим с параметром типа const char*"

Answer 1

Так сойдет?

char buff[50];
// Надеюсь, код для заполнения  buff у вас есть? :)
char str[50] = { 0 };       
for (int i = 0, j = 0; i < strlen(buff); i++)
{
    if (buff[i] >= '0' && buff[i] <= '9')
        str[j++] = buff[i];                  
}
cout << str << endl;

Ваша ошибка в том, что вы в 1 (один) символ пытались воткнуть целую строку...

Answer 2

Раз у Вас метка c++, то и пишите на с++

char buff[50];
std::string sbuff(buff);
std::string str;       
for (int i = 0; i < sbuff.length(); i++){
    if (sbuff[i] >= '0' && sbuff[i] <= '9')
      str += buff[i]
}
cout << str;

как по мне, код стал проще и читаемей.

Answer 3

Функция strcat() принимает два указателя на строки (см. strcat) - первый на изменяемую строку и второй на константную строку. Вы же при вызове функции в качестве первого и второго параметра передаете отдельные символы (char), которые, если будут интерпретированы программой как указатели на строки, непременно вызовут обращение по недопустимому адресу памяти 0x000000XX, где XX-код символа. Для того, чтобы заставить компилятор не ругаться, приведите первый и второй параметры к (char*) и (const char*) соответственно: strcat((char*)str,(const char*)buff[i]); Для того, чтобы исправить баг, который непременно после этого появится, передавайте указатели на корректные строки либо не используйте функцию strcat(), если Вы хотите оперировать отдельными символами.

READ ALSO
Поиск данных в массиве js

Поиск данных в массиве js

Всем привет,имеется вот такой массив данных

218
Как исправить формулу расчета очков за прогноз?

Как исправить формулу расчета очков за прогноз?

Имеется форма для ввода данных:

233
Хранение в массиве переменных

Хранение в массиве переменных

Могу ли я хранить в games для каждой игры свои переменные со значениями id_game и href_game?

228