Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2011, 15:21   #1
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию strcat,strcpy

Люди обьясните мне разницу между strcat и strcpy(заранее просмотрев пример).
Код:
#include <string.h>
#include <stdio.h>

void main( void )
{
   char string[80];
   strcpy( string, "Hello world from " );
   strcat( string, "strcpy " );
   strcat( string, "and " );
   strcat( string, "strcat!" );
   printf( "String = %s\n", string );
}


Output

String = Hello world from strcpy and strcat!
Акоб вне форума Ответить с цитированием
Старый 22.04.2011, 15:36   #2
rus12
Пользователь
 
Регистрация: 20.03.2011
Сообщений: 53
По умолчанию

strcpy - копирует строку в буфер обмена
strcat( string, "strcpy " )-добавляет строку "strcpy " к переменной string
Если помог напиши одобрение(иконка весов слева под ником)
rus12 вне форума Ответить с цитированием
Старый 22.04.2011, 15:40   #3
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Я правельно понял вас, если написать так то работать не будет?
Код:
#include <string.h>
#include <stdio.h>

void main( void )
{
   char string[80];
   strcat( string, "strcpy " );
   strcat( string, "and " );
   strcat( string, "strcat!" );
   printf( "String = %s\n", string );
}
Акоб вне форума Ответить с цитированием
Старый 22.04.2011, 15:51   #4
rus12
Пользователь
 
Регистрация: 20.03.2011
Сообщений: 53
По умолчанию

вроде не будет работать потому что не объявлено значение переменной string.А лучше проверить через компилятор.
Если помог напиши одобрение(иконка весов слева под ником)
rus12 вне форума Ответить с цитированием
Старый 22.04.2011, 16:42   #5
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Да, так не работает.В таком случае, как можно добавить в строчку что нибудь?
Акоб вне форума Ответить с цитированием
Старый 22.04.2011, 17:20   #6
rus12
Пользователь
 
Регистрация: 20.03.2011
Сообщений: 53
По умолчанию

нужно объявить строку какой либо переменной
например:
char a;
a="hello";
и потом добавлять к этой строке другие строки
Если помог напиши одобрение(иконка весов слева под ником)
rus12 вне форума Ответить с цитированием
Старый 22.04.2011, 17:41   #7
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Ни один из этих примеров у меня не работает.
Код:
char *a;
	char *b;
	b = "aaaa";
	a = "hello";
	a = a + b; // выдает ошибку здесь
	cout<<a;
Код:
char *a; // при компеляции ошибки не выдает,но на запуске дает
	char *b;
	b = "aaaa";
	a = "hello";
	strcpy(a,a);
	strcat(a,b);
	cout<<a;
Код:
char a;
	char b;
	b = "aaaa"; //выдает ошибку здесь
	a = "hello"; // здесь
	a = a + b; //и здесь
	cout<<a;

Последний раз редактировалось Акоб; 22.04.2011 в 17:48.
Акоб вне форума Ответить с цитированием
Старый 22.04.2011, 18:49   #8
rus12
Пользователь
 
Регистрация: 20.03.2011
Сообщений: 53
По умолчанию

cout со строками не работает нужно использовать printf
объявляют строковые переменные char str1[]="Hello ";
вот пример
Код:
int main()
{
  char str1[]="Hello ";
  char str2[]="world";
  char str3[13];
   
   strcpy(str3 ,str1);
     strcat(str3,str2);
 printf( "String = %s\n", str3);
getchar();
return 0 ;
}
Если помог напиши одобрение(иконка весов слева под ником)

Последний раз редактировалось rus12; 22.04.2011 в 18:51.
rus12 вне форума Ответить с цитированием
Старый 22.04.2011, 20:34   #9
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Цитата:
Код:
char *a;
	char *b;
	b = "aaaa";
	a = "hello";
	a = a + b; // выдает ошибку здесь
	cout<<a;
поменяйте char * на string
Цитата:
Код:
char *a; // при компеляции ошибки не выдает,но на запуске дает
	char *b;
	b = "aaaa";
	a = "hello";
	strcpy(a,a);
	strcat(a,b);
	cout<<a;
когда вы пишите a = "hello"; вы приравниваете a указатель на строковой массив "hello", но строковой массив "hello" создается в памяти которая доступна только для чтения, когда вы потом пытаетесь копировать туда что либо, появляется ошибка, по этому на до писать char a[10] = "hello";
Цитата:
Код:
char a;
	char b;
	b = "aaaa"; //выдает ошибку здесь
	a = "hello"; // здесь
	a = a + b; //и здесь
	cout<<a;
вы пытаетесь приравнять целый массив в одно байтовую переменную, а потом еще и складываете, опять же поменяйте char на string
Цитата:
cout со строками не работает нужно использовать printf
где это вы такое вычитали)

зы можно для копирования еще memmove() и memcpy() пользоваться
ololo-schoolboy вне форума Ответить с цитированием
Старый 22.04.2011, 22:39   #10
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

rus12,
char *strcpy( char *strDestination, const char *strSource );
Отсюда разве не следует, что strcpy(str3 ,str1); strcat(str3,str2);
str1,str2,str3 должны быть указателями на char???
ololo-schoolboy
Цитата:
где это вы такое вычитали)
Дело в том что об этом я не читал.Мне большв нравится все это делать вручную.
Акоб вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с strcpy() TheWanderer Общие вопросы C/C++ 13 04.07.2013 03:20
Моя strcat Valter Общие вопросы C/C++ 5 12.02.2010 00:30
strcat larry Win Api 3 20.07.2009 12:44
не работает strcat(),strcpy() MeGaTpoH Общие вопросы C/C++ 5 25.01.2009 17:31
strcpy (visual c++ 6.0) JOFRIF Visual C++ 2 04.08.2008 12:19