C言語--文字列の切り取り
1397 ワード
今日、文字列切り取りの機能実装の問題に遭遇しました.よくあるので、記録します.
一般的な実装は次のとおりです.
左からn文字を切り取ります.
右からn文字を切り取ります.
中央の部分文字列を切り取ります.
以上の方法は基本的にポインタで実現されるが、通常はライブラリ関数を使用して文字列の操作を実現することができる.
一般的な実装は次のとおりです.
#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;
}
以上の方法は基本的にポインタで実現されるが、通常はライブラリ関数を使用して文字列の操作を実現することができる.