Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
RocBoy-D
32 / 31 / 7
Регистрация: 10.03.2012
Сообщений: 362
#1

Функция strcpy () - строка должна быть пустой? - C++

17.11.2012, 23:03. Просмотров 547. Ответов 4
Метки нет (Все метки)

Здравствуйте! Возник вопрос: пусть имеются две непустые строки s1 и s2. Правильно ли копировать содержимое строки s2 в строку s1? Или строка s1 должна быть пустой? Проверил, вроде работает и так и так.
C++
1
2
3
4
5
6
7
8
char *str1 = new char [25], *str2 = new char [50];
    
    cin.getline (str1, 25);
    cin.getline (str2, 50);
    delete [] str1;
    str1 = new char [strlen (str2) + 1];
    strcpy (str1, str2);
    cout << str2;
или
C++
1
2
3
4
5
6
7
char *str1 = new char [25], *str2 = new char [50];
    
    cin.getline (str1, 25);
    cin.getline (str2, 50);
    
    strcpy (str1, str2);
    cout << str2;
Добавлено через 9 минут
В последних строчках не str2, a str1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2012, 23:03     Функция strcpy () - строка должна быть пустой?
Посмотрите здесь:

C++ функция strcpy и strcat
Функция strcpy C++
strcpy - как быть? C++
Массивы строк и функция strcpy C++
C++ Точка входа должна быть определена
Что делает функция strcpy(t, f) C++
C++ Точка входа должна быть определена
Массивы C++. Ошибка: M должна быть константой C++
Не работает функция gets(), strcpy() и другие функции с строками C++
C++ Функция strcpy() не копирует строку
Точка входа должна быть определена C++
Составьте программу, вычисляющую функцию y = x! (факториал). Функция расчета факториала должна быть C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
17.11.2012, 23:10     Функция strcpy () - строка должна быть пустой? #2
Копируй на здоровье,
А уж пустая str1 или полная, это компилятору безразлично; ему безразлично также, если str2 будет больше str1

C++
1
2
3
char str1 []= "qqq"; 
char str2 []= "eeeee";  
strcpy (str1, str2);
копирование всё равно произойдёт, но программа отработает некорректно. За подробным надо следить вручную, компилятор такого не остлеживает.

И да, скопируется 6 символов, если чё.
RocBoy-D
32 / 31 / 7
Регистрация: 10.03.2012
Сообщений: 362
17.11.2012, 23:16  [ТС]     Функция strcpy () - строка должна быть пустой? #3
kravam, то есть лучше все-таки освобождать память?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
18.11.2012, 02:40     Функция strcpy () - строка должна быть пустой? #4
В смысле освобождать память?
str2 скопируется в str1, какую память ты хочешь освобождать и главное, зачем?

Тебе нужно, чтобы на месте str1 было содержание str2. Если ты думаешь что для того, чтобы в какую-то ячейку памяти записать содержание, нужно эту ячейку обнулить, ты ошибаешься. Или я не понимаю, о чём речь
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6228 / 3473 / 425
Регистрация: 29.11.2010
Сообщений: 9,178
18.11.2012, 04:00     Функция strcpy () - строка должна быть пустой? #5
RocBoy-D, говоря по-простому, оно возьмет "большое" и запихнет в "маленькое". Оно умеет запихивать, и не проверяет что для этого нужно. Не хочешь париться - юзай std::string.
Yandex
Объявления
18.11.2012, 04:00     Функция strcpy () - строка должна быть пустой?
Ответ Создать тему
Опции темы

Текущее время: 15:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru