/*
有一個字符串,包含n個字符,編寫一函數,將此字符串中從第m個字符開始的全部字符串復制成另一個字符串
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 10
/*
p: 指針的指針(a pointer to pointer to char),
以 p 命名的內存空間 (variable) 中存儲了指向一個指向字符指針的內存首地址 -- data type: 指針
變量 p 被初始化指向一個字符指針,此指針指向 "to"
*/
int replace(int m,int n,char **pStr1,char *pStr2)
{
if(m > n || m < 0)
return 0;
int str2Len = strlen(pStr2);
if(m + str2Len > n)
{
char *base = (char *) malloc(sizeof(m + str2Len + 1));
*base = '\0';
strcpy(base,*pStr1);//將str1復制到新存儲空間中
*pStr1 = base;
}
char *pMove = *pStr1 + m -1;//指向第m個字符
while('\0' != *pStr2)
{
*pMove = *pStr2;
++pMove;
++pStr2;
}
*pMove = '\0';
return 1;
}
int main()
{
char *baseStr1 = NULL;
char *baseStr2 = NULL;
int m,n;
scanf("%d", &n);
scanf("%d", &m);
baseStr1 = (char *) malloc(sizeof(char) * n + 1);
baseStr2 = (char *) malloc(sizeof(char) * MAX_SIZE);
scanf("%s", baseStr1);
scanf("%s", baseStr2);
int ret = replace(m,n,&baseStr1,baseStr2);
if(0 == ret)
printf("input errot \n");
else
printf("%s", baseStr1);
return 0;
}