void Insert (const char *what, char *&str, int whr)
{
char* buf;
int l1 = strlen (what);
int l2 = strlen (str);
buf = new char [l1+l2+2];
for (int i=0; i<whr; i++) buf [i]= str[i];
for (int i=0; i<l1; i++)
buf [i+whr] = what [i];
for (int i=whr+l1; i<l1+l2; i++) buf [i]= str[i-l1];
//buf [l1+l2] = delete [] str;
str = NULL;
str = new char [l1+l2+2];
strcpy (str, buf);
}
#include <iostream.h>
#include <conio.h>
#include <string.h>
void Insert (const char *what, char *&str, int whr) //Вставка подстроки what на заданную позицию whr в str
{
char* buf; //Буфер для работы со строкой
int l1 = strlen (what);
int l2 = strlen (str);
buf = new char [l1+l2+2];
for (int i=0; i<whr; i++) buf [i]= str[i]; //Копируем в буфер часть строки до заданной позиции
for (int i=0; i<l1; i++)
buf [i+whr] = what [i]; //Пишем в буфер подстроку
for (int i=whr+l1; i<l1+l2; i++) buf [i]= str[i-l1]; //Дописываем в конец буфера остаток исходной строки
// buf [l1+l2] = delete [] str; //Освобождаем память (необходимо только при работе с динамической строкой)
str = NULL;
str = new char [l1+l2+2]; //Перевыделяем память под новую длину строки
strcpy (str, buf); //Переписываем буфер в исходную строку
}
main(void)
{
//создаем строку и заполняем ее
char *str = new char[100];
strcpy(str,"name");
//вставляем строку
Insert("is ",str,1);
cout << str << endl;
getch();
return 0;
}
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
// Вставка строки what в строку dst с позиции where
// Строка dst должна иметь необходимый размер для размещения результата
void insert(char* dst, const char* what, size_t where)
{
size_t lenStr = strlen(dst), lenWhat = strlen(what), // Длины строк
cnt = lenStr - where + 1; // К-во символов для переноса
char* from = dst + lenStr, *to = from + lenWhat; // Откуда и куда переносить
// Переносим часть строки. Освобождаем место для вставки
while (cnt--)
{
*to-- = *from--;
}
// Куда вставлять
to = dst + where;
// Вставка
while (*what)
{
*to++ = *what++;
}
}
int main()
{
//создаем строку и заполняем ее
char *str = malloc(100);
strcpy(str, "name Polotenchikko");
//вставляем строку
insert(str, " is", 4);
printf(""%s"\n", str);
free(str);
return 0;
}
"name is Polotenchikko"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
// Гласные
#define VOWELS "AEIOUY"
// Присоединяет гласные из строки src к dst
// dst должна иметь возможность вместить результирующую строку
// Возвращает количество гласных символов(требуемый размер буфера без учета '\0'
// Если src==NULL - возвращает -1
// Если dst==NULL - ничего не копирует, просто возвращает необходимый размер буфера
int addVowels(char* dst, const char* src)
{
if (!src)
{
return -1;
}
int count = strlen(dst);
if (dst)
{
dst += count;
}
// Перемещаемся по строке
while (*src)
{
// Приведение к верхнему регистру и проверка на наличие в множестве
if (strchr(VOWELS, toupper(*src)))
{
++count;
// Копируем в строку
if (dst)
{
*dst++ = *src;
}
}
++src;
}
if (dst)
{
*dst = 0;
}
return count;
}
int main()
{
char *str1 = "aggtwsbEtratrUut", str2[100] = "1234556";
addVowels(str2, str1);
printf("result:"%s"\n", str2);
return 0;
}
result:"1234556aEaUu"
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.