ViVi Home > 技術文書 > ポインタ入門 > 基礎演習問題> erase_head


 

 

C/C++ ポインタ入門 > 文字列関数 > erase_head
Nobuhide Tsuda
Nov-2013

先頭の n 文字を削除:void my_erase_head(char *str, int n)

#include <string.h>        // for strlen
void my_erase_head(char *str, int n)
{
    const int len = strlen(str);
    if( n >= len ) {    // 削除文字数が、文字列 str の長さよりも大きい場合
        *str = '\0';
        return;
    }
    char *src = str + n;    //  コピー元
    while( (*str++ = *src++) != '\0' ) {	//	ヌル文字までコピー
    }
}

解説:

#include <string.h>        // for strlen
void my_erase_head(char *str, int n)
{
    .....
    char *src = str + n;    //  コピー元
    for(int i = 0; i < len - n + 1; ++i) {
        *str++ = *src++;      //  ヌル文字までコピー
    }
}

解説:

 


前: | 次: