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

Программирование на С++

Мастер (1571), на голосовании 2 года назад
Есть задача:



Другой
полезной операцией над строками является конкатенация - склейка двух
строк в одну. Реализуйте функцию, которая добавляет в конец первого
строкового аргумента копию второго строкового аргумента. Памяти в первой
строке достаточно, чтобы сохранить ровно обе строки, но не больше.

Sample Input:
Hello,
World!

Sample Output:
Hello, World!

Memory Limit: 256 MB

Time Limit: 5 seconds-----------------------
В начальном шаблоне решения следующее:
void strcat(char *to, const char *from)
{
//Здесь ваш код
}
--------------------
Я в Visual делаю следующее (прикреплю) :
Дополнен 2 года назад
#include "stdafx.h"

#include <iostream>
using namespace std;
int pause;
void fun(char *to, const char *from)
{
int t = 0; int f = 0;
while (to[t] != '\0'){ ++t; }
while (from[f] != '\0'){ to[t] = from[f]; t++; f++; }
to[t] = '\0'; cout << to << endl;
}
int main()
{
char h[]="Hello";
char w[]=" World!";
fun(h, w);
cin >> pause;
}
Дополнен 2 года назад
Всё работает и строка выводится склеенная, но система не принимает такой ответ, я подозреваю, это из-за названия функции, помогите, кто чем может. Плз.
Голосование за лучший ответ
Я не очень понял, вы пытаетесь скормить данный код какой то системе автоматической проверки? Тогда вам стоит внимательнее почитать правила оформления в этой системе, возможно вам вообще там не нужна main. Если вы хотите назвать функцию void strcat(char *to, const char *from) то вам придётся убрать #include <iostream> и соответственно все cout/cin т. к. strcat стандартная функция языка, которая от вашей отличается только возвращаемым значением, соответственно перегрузить вы её так не сможете.
P.S. В вашем коде есть небольшая ошибка, хоть и не в самой функции fun. char h[]="Hello"; будет иметь размер 6, что не соответствует заданию т. е. для обоих строк там места не хватает, а при конкатенации вы выходите за пределы массива.
Похожие вопросы
Также спрашивают