ほどほど

掃除と家事、趣味を楽しむずぼら主婦のブログ

C言語 お仕事・勉強・技術情報

C言語:文字列のコピー・結合・比較

2016/01/25

文字列関数のコピー、結合、比較と乱数を習いました。

来年4月に行われる、情報処理技術者試験のパンフレットをもらいました。
基本情報を受けたいと思います。
試験勉強はいつ頃始めたら間に合うんでしょう。
今はまだ、余裕ないなぁ・・・

以下、今日の復習です。

スポンサーリンク

文字列のコピー・結合・比較

結果表示

●初期の文字列は下記の通り
 hai1=abcde
 hai2=
 hai3=defgh

●hai2にhai1をコピー
 hai2=abcde

●hai2にhai1の先頭から三文字をコピー
 hai2=abc

●hai2にhai3を連結
 hai2=abcdefgh

●hai2にhai1の先頭から三文字を連結
 hai2=abcdefghabc

●hai2とhai4の比較
 hai2=abcdefghabc hai4=abcdefgh
 hai2とhai4は違う。

●hai2とhai4の先頭二文字を比較
 hai2=abcdefghabc hai4=abcdefgh
 hai2とhai4の先頭二文字は一緒。

ソース

/* 文字列操作関数 */
#include
#include

int main(void)
{
	char hai1[20]="abcde";
	char hai2[20]="";
	char hai3[20]="defgh";
	char hai4[20]="abcdefgh";
	int i;
	
	printf("●初期の文字列は下記の通り\n");
	printf(" hai1=%s\n",hai1);
	printf(" hai2=%s\n",hai2);
	printf(" hai3=%s\n",hai3);
	
	/* hai2にhai1をコピー */
	printf("\n●hai2にhai1をコピー\n");
	strcpy(hai2,hai1);
	printf(" hai2=%s\n",hai2);
	
	/* hai2をzで上書き */
	for(i=0;i<=19;i++){
		hai2[i]='z';
	}
	
	/* hai2にhai1の先頭から三文字をコピー */
	printf("\n●hai2にhai1の先頭から三文字をコピー\n");
	strncpy(hai2,hai1,3);
	hai2[3]=0; /* NULLを入れること */
	printf(" hai2=%s\n",hai2);
	
	/* hai2にhai3を連結 */
	printf("\n●hai2にhai3を連結\n");
	strcat(hai2,hai3);
	printf(" hai2=%s\n",hai2);

	/* hai2にhai1の先頭から三文字を連結 */
	printf("\n●hai2にhai1の先頭から三文字を連結\n");
	strncat(hai2,hai1,3);
	printf(" hai2=%s\n",hai2);
	
	/* hai2とhai4の比較 */
	printf("\n●hai2とhai4の比較\n");
	printf(" hai2=%s hai4=%s\n",hai2,hai4);
	if(strcmp(hai2,hai4)==0)
		printf(" hai2とhai4は一緒。\n");
	else
		printf(" hai2とhai4は違う。\n");
	
	/* hai2とhai4の先頭二文字を比較 */
	printf("\n●hai2とhai4の先頭二文字を比較\n");
	printf(" hai2=%s hai4=%s\n",hai2,hai4);
	if(strncmp(hai2,hai4,2)==0)
		printf(" hai2とhai4の先頭二文字は一緒。\n");
	else
		printf(" hai2とhai4の先頭二文字は違う。\n");
	
	return 0;
}

C言語おすすめ本

私がC言語を勉強した時に使っていた本

速習C言語入門[第2版] ~脳に定着する新メソッドで必ず身につく~の第1版を使っていました。
とても読みやすく、わかりやすくてオススメです。

-C言語, お仕事・勉強・技術情報