プロが教える店舗&オフィスのセキュリティ対策術

連結関数のstrcatの逆ってどうやったらできるのでしょう?
出来るだけシンプルな方法教えてください。

(文字列5→初めの文字列3と後ろの文字列2に分ける)

A 回答 (3件)

char *strcat(char *s1, const char *s2) は、


s1 の後に s2 を結合する関数ですよね。

逆ということは、s1 から s2 を分離することでいいですか?

文字列5→初めの文字列3と後ろの文字列2に分けるのなら

strcpy(s2,s1+3);
*(s1+3)='\0';

文字列の分離位置を変数にしたいのなら、
切り離す最初の文字列長をlenとすれば

strcpy(s2,s1+len);
*(s1+len)='\0';

です。
    • good
    • 0

strcatは先頭ポインタと終末のNullのみを意識し、lengthを意識しないものですので、やりたい事が「文字5文字を最初の3文字と後ろ2文字に分ける」でしたら、strcatの逆と考える事は出来ません。


memcpy等lengthを意識する関数値で3文字コピー、ポインタ3つずらして2文字コピーになると思います。
    • good
    • 0

char str[] = "ABCab";


char front[4], rear[3];

strncpy(front, str, 3);
front[3] = '\0';
strcpy(rear, str + 3);

printf("[%s][%s]\n", front, rear);
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!