Хочу записать в переменную то, что получается в цикле.
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*"
Так сойдет?
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 (один) символ пытались воткнуть целую строку...
Раз у Вас метка 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;
как по мне, код стал проще и читаемей.
Функция strcat() принимает два указателя на строки (см. strcat) - первый на изменяемую строку и второй на константную строку. Вы же при вызове функции в качестве первого и второго параметра передаете отдельные символы (char), которые, если будут интерпретированы программой как указатели на строки, непременно вызовут обращение по недопустимому адресу памяти 0x000000XX, где XX-код символа. Для того, чтобы заставить компилятор не ругаться, приведите первый и второй параметры к (char*) и (const char*) соответственно: strcat((char*)str,(const char*)buff[i]); Для того, чтобы исправить баг, который непременно после этого появится, передавайте указатели на корректные строки либо не используйте функцию strcat(), если Вы хотите оперировать отдельными символами.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники