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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2011, 18:01   #1
Multiman
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 91
По умолчанию Простые строки в Си

Доброго времени суток.
Задачка: Дано слово перенести его k букв в конец. Полученное слово вывести на экран.

Код:
char str1[30], str2[30];
int i ;

printf("vvedite slovo ");
scanf("%s", str1);
printf("vvedite kolichestvo bykv ");
scanf("%d", &i);

strncpy( str2, str1, i );
strcat(str1, str2);
puts(str1);

Как сделать, чтобы то что я скопировал из слова потом удалилось?
Multiman вне форума Ответить с цитированием
Старый 24.03.2011, 20:00   #2
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Код:
void replace(char& val1, char& val2)
{
char val3=val1;
val1=val2;
val2=val3;
return;
}
int main()
{
char str[32];
int k, len;
printf("enter str: ");
scanf("%s", str);
len=strlen(str)+1;
printf("enter symbols number: ");
scanf("%d", k);
for (int i=0; (i<len) && (i<k); i++)
replace(str[i], str[i+len-k];
printf("result: %s", str);
system("PAUSE");
}
Код не проверял, но должно работать.
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 24.03.2011, 23:04   #3
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
	char* str = new char[80];
	char* pBase=str;

	strcpy(str,"qwerty123");

	puts(str);

	const int k=5;
	int len=strlen(str);
/* Значащая часть */
	memmove(str + len,str,k);
	str+=k;
	str[len]=0;
/* --------------- */
	puts(str);

	delete[] pBase;
но очень не нравится запоминание старой длины len


ваш код кстати вот так можно исправить

Код:
strncpy( str2, str1, i );
str2[i]=0;
strcat(str1, str2);
memmove(str1,str1+i,i*2+2);
почему i*2+2 сам не понял))))

Последний раз редактировалось onewho; 24.03.2011 в 23:19.
onewho вне форума Ответить с цитированием
Старый 25.03.2011, 13:58   #4
Multiman
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 91
По умолчанию

А кто-нибудь может пояснить доступно как эта штука работает:
memmove(str1,str1+i,i*2+2); ? В интернете смотрел ничего не понял(
А и еще, для чего здесь ноль присваевается: str2[i]=0;?
Multiman вне форума Ответить с цитированием
Старый 25.03.2011, 19:28   #5
Multiman
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 91
По умолчанию

Неужели никто не знает как memmove работает?
Multiman вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простые числа Koko Shanel' Помощь студентам 2 08.09.2010 01:13
Простые числа Verochka Помощь студентам 14 02.12.2008 20:30
Простые вопросы по C++ ERASERROR Помощь студентам 3 24.03.2008 16:58
простые числа Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 2 05.12.2007 12:23