Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите исправить код с++

ахахахах ахахахах Мастер (2105), открыт 1 неделю назад
 #include <iostream> 
#include <string>

using namespace std;

int main() {

string a;
getline(cin, a);

char *n = new char[a.length()];

int i = 0;
char k = a[i];
while (k != ".") {
n[i] = k;
k = a[i+1];
i++;
}

return 0;
}
5 ответов
fatmxvd Профи (520) 1 неделю назад
#include <iostream>
#include <string>

using namespace std;

int main() {
string a;
getline(cin, a);

char *n = new char[a.length() + 1]; // +1 для нулевого символа

int i = 0;
char k = a[i];
while (k != '.' && i < a.length()) { // добавляем проверку на длину строки
n[i] = k;
k = a[i + 1];
i++;
}
n[i] = '\0'; // добавляем нулевой символ в конец строки

cout << n << endl; // выводим строку

delete[] n; // освобождаем память

return 0;
}
ахахахах ахахахахМастер (2105) 1 неделю назад
спасибо, а почему надо писать n[i] = '\0'; а не n[i] = '0';
ахахахах ахахахах, потому что 0 - это ноль, а \0 - это управляющий символ, обозначающий признак конца строки.
Программист h Профи (716) 1 неделю назад
слушай я посмотрел твой код у тебя тут пару ошибок но я их исправил
#include <iostream>
#include <string>

using namespace std;

int main() {
string a;
getline(cin, a);

char *n = new char[a.length() + 1];

int i = 0;
while (i < a.length() && a[i] != '.') {
n[i] = a[i];
i++;
}

n[i] = '\0';

// Выводим результат
cout << "Результат: " << n << endl;

delete[] n;

return 0;
}
Вертолётов 625 Мудрец (12916) 1 неделю назад
Код:
 #include <iostream> 
#include <string>

using namespace std;

int main() {
string a;
getline(cin, a);

// Создаём массив с дополнительным местом для завершающего нуля (если это нужно)
char *n = new char[a.length() + 1];

int i = 0;
while (i < a.length() && a[i] != '.') {
n[i] = a[i];
i++;
}

// Добавляем завершающий нуль, если это массив C-строки
n[i] = '\0';

// Выводим результат для проверки (можно удалить в рабочей версии)
cout << n << endl;

// Освобождаем выделенную память
delete[] n;

return 0;
}
Андрей Высший разум (460736) 1 неделю назад
 string a;
getline(cin, a);
char *n = new char[a.length() + 1];
char *p = n;
for (auto ch: a) {
if (ch == '.') { break; }
*p++ = ch;
}
*p = '\0';
cout << n;
D P Мудрец (17838) 1 неделю назад
 #include <iostream> 
#include <string>

const std::string test_str[] =
{
"имя.расширение",
"имя_без_расширения",
".скрытый_файл"
};
int main( int argc, char* argv[] )
{
std::cout << "Извлечение имени файла:" << std::endl;
std::string name;
for( auto s:test_str )
{
size_t idx = s.find('.');
// Если удалось найти символ '.'
if( idx != std::string::npos )
{
name.assign( s, 0, idx );
}
else
{
name.assign( s );
}
std::cout << "'" << s << "' => '" << name << "'" << std::endl;
}

return 0;
}
Результат работы:
 Извлечение имени: 
'имя.расширение' => 'имя'
'имя_без_расширения' => 'имя_без_расширения'
'.скрытый_файл' => ''
Похожие вопросы