こんばんは。きわさです。
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
文字列のコピーと連結、結構使う機会はあるので覚えておきたい関数ですね。