1) используя традиционную обработку массивов
2) используя адресную арифметику.
Задание.
Действие: вставка в строку s подстроки s1, начиная с позиции n
Написал программы, но не получается то, что требуется.
Код 1.
#include
#include
void ins(char* s, char* s1, int t)
{
char tmp[1000];
int i, j;
for (i = t, j = 0; i < 1000; i++, j++) {
tmp[j] = s[i];
}
for (i = t, j = 0; i < 1000; i++, j++)
s[i] = s1[j];
for (i = (t + strlen(s1)), j = 0; i < 1000; i++, j++)
s[i] = tmp[j];
}
int main()
{
char s[1000], s1[1000];
for (int i = 0; i < 1000; i++)
s[i] = '\0';
int n;
printf("vvedite s\n");
gets_s(s, 1000);
printf("vvedite s1\n");
gets_s(s1, 1000);
printf("vvedite n\n");
scanf_s("%d", &n);
ins(s, s1, n);
printf("%s\n", s);
return 0;
}
Код 2. #include
#include
char* dob(char* s, char* s1, int k) {
int lenS = strlen(s);
int lenS1 = strlen(s1);
memmove(s + k + lenS1, s + k, lenS - k + 1);
memcpy(s + k, s1, lenS1);
return s;
}
int main() {
int k;
char s[1000];
char s1[1000];
printf("vvedite s=");
gets_s(s, 1000);
printf("vvedite s1=");
gets_s(s1, 1000);
printf("vvedite k=");
scanf_s("%d", &k);
printf("%s\n", dob(s, s1, k));
return 0;
}