Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
MaRiNk
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 62
#1

Собственная функция strcat -сцепление строк - C++

08.11.2012, 20:13. Просмотров 1686. Ответов 11
Метки нет (Все метки)

написать собственную функцию strcat -сцепление строк. Сравнить работу функции со стандартной из библиотеки string.h, если таковая имеется(если стандартной функции не существует, имя функции задания выделено курсивом). Выделение динамической памяти в этой задаче не предполагается.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
char *strcat(char *s)
char c, *t, *t0=s;
for (t=s+strlen (s)-1;s<t;s++,t--){
c=*s; *s=*t; *t=c;
}
return t0;
}
void main(){
char s[80],s2[80];
printf("\nVvedite stroku: ");
gets(s);
strcpy (s2,s);
puts("\nMoja funkzija:"); puts (strcat(s));
puts("\nstandartnaja funczija:"); puts (strcat(s2));
fflush(stdin);getchar();
}
у меня выдаются синтаксические ошибки, если честно то не очень понимаю как их исправить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 20:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Собственная функция strcat -сцепление строк (C++):

Сцепление строк - C++
Как написать оператор для сцепления 2-х массивов типа char с исключением одинаковых символов. То, что у меня получилось просто...

Функция strcat - C++
Нужно написать прогу на C++ и Ассемблере...функцмя strcat(на ассемблере сделал а вот на C++ не могу).Если кто поможет буду очень...

функция strcat - C++
Помогите разобраться, пожалуйста. char* resultat = 0; char* str = &quot;abc&quot;; strcat(resultat, str); вылетает с ошибкой. Как нужно...

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

Библиотека string.h, функция strcat - C++
Написал вот такое, но в программе все равно текст не выводит. Должно работать точно также, как и обычная библиотека strcat. char *...

Что делает функция strcat(t, f) - C++
Функция strcat(t, f) что она делает и как применяеться?

11
David Sylva
1293 / 955 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
08.11.2012, 20:16 #2
Синтаксические ошибки подправил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
char *strcat(char *s) 
{
char c, *t, *t0=s;
for (t=s+strlen (s)-1;s<t;s++,t--){
c=*s; *s=*t; *t=c;
}
return 0;
}
int main(){
char s[80],s2[80];
printf("\nVvedite stroku: ");
gets(s);
strcpy (s2,s);
puts("\nMoja funkzija:"); puts (strcat(s));
puts("\nstandartnaja funczija:"); puts (strcat(s2));
fflush(stdin);getchar();
}
void main не пиши это неправильно
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
08.11.2012, 20:23 #3
Цитата Сообщение от MaRiNk Посмотреть сообщение
void main(){
int main

Добавлено через 3 минуты
Цитата Сообщение от MaRiNk Посмотреть сообщение
char *strcat(char *s)
char c, *t, *t0=s;
for (t=s+strlen (s)-1;s<t;s++,t--){
c=*s; *s=*t; *t=c;
}
return t0;
}
Это не сцепление строк, а что-то похожее на переворот строки в обратном порядке

Добавлено через 52 секунды
Цитата Сообщение от MaRiNk Посмотреть сообщение
char *strcat(char *s)
фигурной скобки нет
C++
1
char *strcat(char *s){
Добавлено через 2 минуты
Цитата Сообщение от David Sylva Посмотреть сообщение
puts("\nMoja funkzija:");
puts (strcat(s));
puts("\nstandartnaja funczija:");
puts (strcat(s2));
Ты действительно думаешь, что компилятор различит 2 функции с одинаковыми именами? К тому же настоящий strcat принимает 2 строки
0
David Sylva
1293 / 955 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
08.11.2012, 20:26 #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ты действительно думаешь, что компилятор различит 2 функции с одинаковыми именами? К тому же настоящий strcat принимает 2 строки
Я поэтому поводу ничего не думаю, я даже не смотрел о чём программа, человек спросил о синтаксических ошибках я ему их подправил, чтобы программа компилировалась, а по смыслу не смотрел.
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
08.11.2012, 20:29 #5
Цитата Сообщение от David Sylva Посмотреть сообщение
Я поэтому поводу ничего не думаю, я даже не смотрел о чём программа, человек спросил о синтаксических ошибках я ему их подправил, чтобы программа компилировалась, а по смыслу не смотрел.
Ну я собственно не тебе и отвечал. Извини, но взял цитату кода из твоего ответа.
0
MaRiNk
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 62
08.11.2012, 20:42  [ТС] #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Это не сцепление строк, а что-то похожее на переворот строки в обратном порядке
а правильно тогда как будет?
C++
1
2
3
4
5
6
7
char *strcat(char *s)
char c, *t, *t0=s;
for (t=s+strlen (s);s<t;s++){
c=*s; *s=*t; *t=c;
}
return 0; 
}
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
08.11.2012, 20:48 #7
Цитата Сообщение от MaRiNk Посмотреть сообщение
а правильно тогда как будет?
char *strcat(char *s)
char c, *t, *t0=s;
for (t=s+strlen (s);s<t;s++){
c=*s; *s=*t; *t=c;
}
return 0;
}
примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
char* strcatMy(char* dest, char* src){
  char* it=dest;
  while(*it++);
  while(*src){
     *it=*src;
     src++;
     it++;
  }
  *it=0;
  return dest;
}
Обязательно назови strcatMy или strcat2, но не тем же самым именем, с которым хочешь сравнивать
0
MaRiNk
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 62
09.11.2012, 04:45  [ТС] #8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
char* strcatMy(char* dest, char* src)
у меня выдает ошибку о том что мало параметров вызвано
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
09.11.2012, 04:53 #9
Цитата Сообщение от MaRiNk Посмотреть сообщение
у меня выдает ошибку о том что мало параметров вызвано
Ты Давид Силва? Естесственно выдаёт, потому что вы оба strcat вот так вызываете.
Цитата Сообщение от David Sylva Посмотреть сообщение
strcat(s)
Погуглите оба справку по strcat и узнаете, что ей надо передавать строку src и строку dest. А затем напишите как надо.
0
MaRiNk
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 62
09.11.2012, 05:16  [ТС] #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А затем напишите как надо.
C++
1
2
puts("\nMoja funkzija:"); puts (strcatMy(s,s2)," ");
puts("\nstandartnaja funczija:"); puts (strcat(s,s2)," ");
мне это дало другие ошибки
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
09.11.2012, 05:25 #11
какие другие? Что puts принимает только одну строку как параметр? И ты этого не знаешь? Судя по использованию puts("\nMoja funkzija:"); - знаешь. Тогда почему рядом пишешь какой-то ещё " " во втором вызове puts???
C++
1
2
puts("\nMoja funkzija:"); puts (strcatMy(s,s2));
puts("\nstandartnaja funczija:"); puts (strcat(s,s2));
0
MaRiNk
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 62
09.11.2012, 08:23  [ТС] #12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Код C++

puts("\nMoja funkzija:"); puts (strcatMy(s,s2));
puts("\nstandartnaja funczija:"); puts (strcat(s,s2));
щас все нормально, кроме того что он соединяет вторую строчку со второй, а не с первой

Добавлено через 54 минуты
а если вообще без него
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
puts("\nMoja funkzija:")
я добавила еще одну строку
C++
1
2
3
4
5
gets(s1); strcpy (s1,s2);
gets(s2); strcpy (s1,s2);
gets(s3); strcpy (s1,s2);
puts("\nMoja funkzija:"); puts (strcat(s1,s2));
puts("\nstandartnaja funczija:"); puts (strcat(strcat(strcpy(s1,s2)s2)s3));
но выводит строчки вторая+вторая+третья, как вместо второй первую поставить?

Добавлено через 6 минут
Цитата Сообщение от MaRiNk Посмотреть сообщение
как вместо второй первую поставить
всё, я справилась =))))
спасибо, за оказанную ранее помощь)))))))))
0
09.11.2012, 08:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2012, 08:23
Привет! Вот еще темы с ответами:

Собственная функция gets и puts - C++
Как описать свою функцию gets, не могу понять, чтобы работала в моей библиотеке. Аналогично puts. У кого-нибудь есть мысли на этот счет?

Своя функция strcat, завершение с ошибкой - C++
Здравствуйте, написал свою функцию strcat, она выполняет то, что от нее нужно, но сама программа при этом завершается с ошибкой. void...

Своя функция strcat. Копирует мусор - C++
Не могу как сделать так, что бы копирование происходило несколько раз. char *Copies(const char *s, char *s1, int n) { for...

Собственная функция true, false - C++
Приветствую, возникли проблемы с выполнением кода. Сначала показывал вроде правильно, потом я начал его исправлять, и вообще не показывает...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru