Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/57: Рейтинг темы: голосов - 57, средняя оценка - 4.61
Мат в 32 хода
 Аватар для nikkka
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096

Функция strcpy

03.04.2011, 08:22. Показов 12545. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
цель очевидна. почему не работает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
void strcpy(char *from, char *to) {
        to=from;
}
int main()
{
    char* f = "The array of chars";
    char* t = "An Array of chars!";
    strcpy(f,t);
    std::cout<<t;
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2011, 08:22
Ответы с готовыми решениями:

Функция strcpy
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &quot;string.h&quot; using namespace std; char * getname(void); // прототип функции...

функция strcpy и strcat
Добрый день!У меня такая проблема...Есть массив строк, где хранятся имена и при выводе имени на экран,если оно длиннее определенного,то я...

Что делает функция strcpy(t, f)
Функция strcpy(t, f) что она делает?

27
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
21.03.2014, 10:49
Студворк — интернет-сервис помощи студентам
Прошу прощения, скопировав на форум, забыл изменить FIO на cpy - функцию.
C++
1
 puts(cpy(s));
Программа должна вывести "Hello, World!", но выводит "смайлик" или "Hellсмайлик".
До этого у меня описана подобная функция, возвращающая строку, только там я не использовал strcpy и все работало замечательно.

Добавлено через 5 минут
Есть еще вариант, что ошибка в puts(), потому что если сделать переменную указатель и ей присвоить значение функции все будет в порядке, она хранит адрес строки (отладчик показывает), но puts() не может вывести правильно.

Добавлено через 3 минуты
Tulosba, спасибо.
Не стоит возвращать указатель на локальный объект, вы были правы.
Спасибо!

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h" 
#include <locale.h> //для языков
#include <stdio.h> //ввод-вывод
#include <conio.h> //консольный режим
#include <string.h> //строки
#include <stdlib.h>
char news[20];
char *cpy(char *r)
{ 
  strcpy(news,r);
  return news;
}
void main()
{  char s[20]="Hello, World!";
 
    setlocale(0,"russian");
    puts(cpy(s));
 
   puts("\n\nНажмите любую клавишу для завершения...");
  _getch();
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
21.03.2014, 10:58
antonboom, глобальных переменных тоже лучше избегать. Передавайте лучше в cpy() указатель на целевую строку. В итоге, правда, получится обертка над strcpy с такой же сигнатурой и без дополнительных побочных эффектов. Т.о. cpy() будет не нужна вовсе
P.S. передавать неизменяемую строку (а ведь строка, которая копируется, не изменяется) следует по крайней мере через const char*.
0
21.03.2014, 12:37

Не по теме:

У меня функция, выполняющая разные операции со строкой-аргументом и возвращающая преобразованную строку. Пустой strcpy() в функции просто, чтобы разобраться. Я думал в нём проблема

0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
21.03.2014, 12:44
Цитата Сообщение от antonboom Посмотреть сообщение
Пустой strcpy() в функции просто, чтобы разобраться. Я думал в нём проблема
Проблемы в стандартных функциях бывают очень-очень-очень редко. И чаще всего проблемы относятся к неправильному их использованию.
0
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
21.03.2014, 12:56
Все, к черту. Буду делать так (кажется пришли к началу темы):
C++
1
2
3
4
void cpy(char s[80],char news[80])
{  
   strcpy(news,s);
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
21.03.2014, 13:07
C++
1
void cpy(char s[80],char news[80])
Имейте в виду, что этот размер (80) по факту не учитывается и не проверяется.
Лучше вообще пользоваться strncpy() с передачей максимального размера строки как отдельного параметра.
И ещё, в сишных (и не только) функциях принято первым аргументом задавать целевой, а потом уже исходный. Это как при присваивании:
C++
1
2
destination = source;
f( destination, source );
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
21.03.2014, 13:39
antonboom, в идеальном случае ты должен объяснить словами, чего конкретно ты хочешь, а тебе расскажут, как это сделать
0
21.03.2014, 15:06

Не по теме:

Читайте после 3х сообщений выше, спасибо.
Усиленная конкретика здесь не обязательна.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2014, 15:06

Функция strcpy() не копирует строку
Функция strcpy() не копирует строку //--------------------------------------------------------------------------- #pragma hdrstop ...

Массивы строк и функция strcpy
#include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;cctype&gt; using namespace std; int mystrcpy( char *stl ,char *str); int...

Функция strcpy () - строка должна быть пустой?
Здравствуйте! Возник вопрос: пусть имеются две непустые строки s1 и s2. Правильно ли копировать содержимое строки s2 в строку s1? Или...

Не работает функция gets(), strcpy() и другие функции с строками
Подключеные библиотеки все. MVS 2013. #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;cctype&gt; using namespace std; int...

strcpy()
Ребята! Помогите с задачкой! С помощью функции strcpy() заменить в строке три символа, начиная со второго. Для замены вводим короткую...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru