C言語--文字列の切り取り


今日、文字列切り取りの機能実装の問題に遭遇しました.よくあるので、記録します.
一般的な実装は次のとおりです.
#include 
#include 

int main(void){
  char dest[5]={0};
  char src[]="abcdefghijk";

  strncpy(dest,src,4);//          5  ,     
                      //      dest            ,        ;
  //strncpy(dest,src+5,4);//  5       ;
  printf("dest: %s
",dest); return 0; }

左からn文字を切り取ります.
static char* left(char *dest,const char *src ,int n){
char *p=dest;
char *q=src;
int len=strlen(src);

if(n>len){
  n=len;
}
while(n--) *(p++)=*(q++);
*(p++)='\0';

return dest;
} 

右からn文字を切り取ります.
static char* light(char *dest,const char *src ,int n){
char *p=dest;
char *q=src;
int len=strlen(src);

if(n>len){
  n=len;
}
//int start=len-n;
//q=q+start;
q+=len-n;
while(n--) *(p++)=*(q++);
*(p++)='\0';
return dest;
} 

中央の部分文字列を切り取ります.
static char* cut_substr(char *dest,const char *src ,char start,int n){
char *p=dest;
char *q=src;
chsr *temp=NULL;
int len=strlen(src);

if(start>=len || start<0){
  return NULL;
}
temp=q+start;
if(n>strlen(temp)){//    ,         src          src   ,       ;
   n=strlen(temp);
}
q+=start;
while(n--) *(p++)=*(q++);
*(p++)='\0';
return dest;
} 

以上の方法は基本的にポインタで実現されるが、通常はライブラリ関数を使用して文字列の操作を実現することができる.