0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 22
1

Функция копирования строки

09.03.2019, 12:15. Показов 5032. Ответов 14
Метки нет (Все метки)

Нужно писать функцию Strcopy1() который работает как Strcopy() , нужно переписать сиволы из 2ого строка в первую ('\0' тоже)
Это функция будет иметь один цикл while без тело.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2019, 12:15
Ответы с готовыми решениями:

Функция копирования строки
Есть строка,написать программу с ф-цией,которая формирует строку-копию.

Есть ли в С++ функция копирования строки с определенной позиции?
подскажите пожал-та. есть в С++ функция копирования строки с определенной позиции? что то не могу...

функция копирования подстроки
Написать функцию копирования подстроки строки S1, начиная с символа номер k1 до символа k2, с...

Функция копирования
Второй день изучаю Си, не могу понять, что я делаю не так! О существовании strcpy, но ради практики...

14
Модератор
Эксперт С++
12095 / 9769 / 5907
Регистрация: 18.12.2011
Сообщений: 26,225
09.03.2019, 13:01 2
Лучший ответ Сообщение было отмечено Mushegh7777 как решение

Решение

C++
1
2
3
4
5
6
7
8
char* Strcpy1(char* dst,char* src)
{
    char* pt=dst;
    while(*src)
       *(dst++)=*(src++);
   *dst=0;
   return pt;
}
1
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 13:01 3
Да пожалуйста)
C++
1
2
3
4
5
char* Strcopy(char *copyStr, char* sourceStr)
{
    while (*copyStr++ = *sourceStr++);
    return copyStr;
}
1
Модератор
Эксперт С++
12095 / 9769 / 5907
Регистрация: 18.12.2011
Сообщений: 26,225
09.03.2019, 13:04 4
Krokodil9798, у Вас возвращается указатель на конец строки, а надо на начало
1
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 13:10 5
+zss Виноват, ещё не проснулся)
C++
1
2
3
4
5
6
char* Strcopy(char* copyStr, char* sourceStr)
{
    char* sourseCopyPtr = sourceStr;
    while (*copyStr++ = *sourseCopyPtr++);
    return copyStr -= sourseCopyPtr - sourceStr;
}
0
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 22
09.03.2019, 16:01  [ТС] 6
Брат это 2 строку заменяет на 1 строку но нужна печатать 1 строку и скопированную 2 строку рядом с 1
0
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 22
09.03.2019, 16:25  [ТС] 7
Нужно писать функцию Strcopy1() который работает как Strcopy() , нужно копировать сиволы из 2ого строка в первую рядом первого строка ('\0' тоже)
Это функция будет иметь один цикл while без тело.
0
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 22
09.03.2019, 19:30  [ТС] 8
Нужно писать функцию Strcopy1() который работает как Strcopy() , нужно копировать сиволы из 2ого строка в первую рядом первого строка ('\0' тоже)
Это функция будет иметь один цикл while без тело.
0
Модератор
Эксперт С++
12095 / 9769 / 5907
Регистрация: 18.12.2011
Сообщений: 26,225
09.03.2019, 19:57 9
Mushegh7777, Вы же получили решение.
Зачем нужно было еще 2 раза создавать эту тему?
Может Вы не понимаете как работать с функцией?
C++
1
2
3
4
char s1[]="123456789",s2[10];
cout<<s1<<' ';
Strcopy1(s2,s1);
cout<<s2<<endl;
0
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 22
09.03.2019, 20:12  [ТС] 10
Я понимаю как работает но , строка 2 копирает на строка 1 и данные из строка 1 заменяеться , мне нужна писать рядом с ней!
Например char s1[]={"Black"} , char s2[]={"Green"} мне нужно пичатать Black Green , и использовать один цикл while без тело копировать 2 строка на 1
0
Модератор
Эксперт С++
12095 / 9769 / 5907
Регистрация: 18.12.2011
Сообщений: 26,225
09.03.2019, 21:03 11
Mushegh7777, Это называется strcat, а не strcpy
C++
1
2
3
4
5
6
7
8
9
10
char* Strcat1(char* dst,char* src)
{
    char* pt=dst;
    while(*dst)
       dst++;
    while(*src)
       *(dst++)=*(src++);
   *dst=0;
   return pt;
}
1
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 21:18 12
+zss Как Вы смогли понять, что хочет этот человек?) Я Вами восхищаюсь
1
0 / 0 / 0
Регистрация: 12.02.2019
Сообщений: 22
09.03.2019, 21:53  [ТС] 13
zss, функция strcat обединяет строки с '\0' , например char s1[50] = { "ashsd" };
char s2[50] = { "dfdhfdf" }; печатает с пробелом ashsd dfdhfdf а не ashsddfdhfdf
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 22:18 14
Mushegh7777 Где вас только таких учат...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* Strcat1(char* dst, char* src)
{
    char* pt = dst;
    while (*dst)
        dst++;
 
    //Держите, этого Вы хотели? Нужно именно так, а не (*dst++), поскольку тогда в строке окажется '\0' и вторая часть 
    //строки выведена не будет стандартными функциями, такими как cout или printf
    *dst++ = ' ';
 
    while (*src)
        *(dst++) = *(src++);
    *dst = 0;
    return pt;
}
1
Модератор
Эксперт С++
12095 / 9769 / 5907
Регистрация: 18.12.2011
Сообщений: 26,225
10.03.2019, 06:30 15
Цитата Сообщение от Mushegh7777 Посмотреть сообщение
печатает с пробелом ashsd dfdhfdf а не ashsddfdhfdf
Кто Вам это сказал?
Цитирую микрософт:
Strcat функция добавляет strSource для strDestination и завершает результирующую строку нуль-символом. Начальный символ строки strSource перезаписывает завершающий нуль-символ из strDestination. Поведение strcat не определено, если строки источника и назначения перекрываются.
Пример с Вашими строками:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#include <conio.h> 
#include <string.h> 
int main()
{
    char s1[50] = "ashsd", s2[50] = "dfdhfdf";
    strcat(s1, s2);
    puts(s1);
    _getch();
    return 0;
}
результат:
ashsddfdhfdf
Если нужны пробелы, то Вы их должны добавлять самостоятельно
C++
1
2
3
char s1[50] = "ashsd", s2[50] = "dfdhfdf";
strcat(s1, " ");
strcat(s1, s2);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2019, 06:30
Помогаю со студенческими работами здесь

Функция копирования массива
При заданном алгоритме функция работает верно. void copy2(const double (*ar0), double (*ar2),...

Функция копирования строк
Вобщем, есть функция копирования строк, выглядит так: void strcpy4(char* s, char* t){...

Функция копирования строк в БД
Разрабатывается приложение, в функции которого должна входить функция копирования строк. Вроде бы...

Не работает функция копирования файлов
При попытке копировать любой файл выскакивает сообщение Прекращена работа программы Проводник. И...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru