C言語で文字列を操作する(1)

こんばんは。きわさです。

C言語の文字列操作に関する備忘録です。
自前で用意しても良いですが、すでに用意されているものがあるのでそれを使ってみます。
string.hのインクルードが必要です。

strcpy

文字列をコピーする

書式

char* strcpy(char *dest, const char *src)

概要

srcの文字列(‘\0’まで)をdestにコピーします。

引数

char *dest: コピー先文字列のポインタ
const char *src: コピー元文字列のポインタ

戻り値

コピー先文字列のポインタ(引数 destと同値)

使用例

#include "string.h"
void main(void) {
    char str1[20] = "Sample Message";
    char str2[] = "Message";
    strcpy(str1, str2);
    printf("%s\n", str1);
    return;
}

結果

Message

実行結果は”Message”のみが出力されています。これは\0もコピーしているためで、実際のstr1は”Message\0essage“となっています。

strncpy

指定したバイト数だけ文字列をコピーする

書式

char* strncpy(char *dest, const char *src, size_t len)

概要

srcの文字列をlenバイトだけdestにコピーします。

引数

char *dest: コピー先文字列のポインタ
const char *src: コピー元文字列のポインタ
size_t len: コピーする文字列長

戻り値

コピー先文字列のポインタ(引数 destと同値)

使用例

#include "string.h"
void main(void) {
    char str1[20] = "Sample Message";
    char str2[] = "SAMPLE";
    strncpy(str1, str2, 6);
    printf("%s\n", str1);
    return;
}

結果

SAMPLE Message

strcpyと違い指定したバイト数のみのコピーとなり、\0がコピーされないため注意が必要です。コピー後は必要に応じて\0を入れてやる必要があります。

strcat

文字列を連結する

書式

char* strcat(char *dest, const char *src)

概要

文字列destの後ろ(‘\0’の前)に文字列srcを連結します。

引数

char *dest: 連結先文字列のポインタ
const char *src: 連結元文字列のポインタ

戻り値

連結先文字列のポインタ(引数 destと同値)

使用例

#include "string.h"
void main(void) {
    char str1[20] = "Sample";
    char str2[] = "Message";
    strcat(str1, str2);
    printf("%s\n", str1);
    return;
}

結果

SampleMessage

“SampleMessage”と正しく出力されています。これは”Sample\0″の”Sample”と”\0″の間に”Message”が連結され、”SampleMessage\0″となっているということです。

strncat

指定したバイト数だけ文字列を連結する

書式

char* strncat(char *dest, const char *src, size_t len)

概要

文字列destの後ろ(‘\0’の前)に文字列srcをlenバイトだけ連結します。

引数

char *dest: 連結先文字列のポインタ
const char *src: 連結元文字列のポインタ
size_t len: 連結する文字列長

戻り値

連結先文字列のポインタ(引数 destと同値)

使用例

#include "string.h"
void main(void) {
    char str1[20] = "Sample";
    char str2[] = "Message";
    strncat(str1, str2, 3);
    printf("%s\n", str1);
    return;
}

結果

SampleMes

文字列のコピーと連結、結構使う機会はあるので覚えておきたい関数ですね。

スポンサーリンク