[C言語]文字列の先頭からN文字を削除するには?

C言語

どうも、ちょげ(@chogetarou)です。

文字列(string)の先頭からN文字を削除する方法を紹介します。

スポンサーリンク

方法

文字列(string)の先頭からN文字を削除する方法は、2つあります。

memmove()

ひとつは、memmove()を使う方法です。

まず、memmove()を呼び出します。

memmove()の第1引数に対象の文字列、第2引数に対象の文字列に「+N」した値、第3引数に文字列の文字数を指定します。

//text=対象の文字列, N=削除する文字数
memmove(text, text + N, strlen(text));

上記のmemmove()は、文字列の先頭からN文字を削除します。

使用例

#include <stdio.h>
#include <string.h>

int main(void){
    char text[] = "Hello,World";
    
    int N = 3;
    memmove(text, text + N, strlen(text));
    
    printf("%s", text);
    
    return 0;
}
出力:
lo,World

ポインタ

もうひとつは、ポインタを使う方法です。

具体的な方法としては、「char *result = text + N;」のように、ポインタに「対象の文字列にNを足した値」を代入します。

//text=対象の文字列, N=削除する文字数
char *result = text + N;

上記の代入は、ポインタに文字列の先頭からN文字を削除した結果を格納します。

使用例

#include <stdio.h>
#include <string.h>

int main(void){
    char text[] = "Hello,World";
    
    int N = 3;
    char *result = text + N;
    
    printf("%s", result);
    
    return 0;
}
出力:
lo,World

まとめ

文字列(string)の先頭からN文字を削除する方法は、次の2つです。

  • memmove()を使う方法
    memmove(text, text + N, strlen(text));
  • ポインタを使う方法
    char *result = text + N;

コメント

タイトルとURLをコピーしました