アットウィキロゴ

文字列

文字の配列

char str[4];
        int count;
 
        str[0] = 'R';
        str[1] = 'e';
        str[2] = 'n';
        str[3] = 'a';
 
        for(count = 0 ; count <= 3 ; count++) {
		printf("%c" , str[count]);
	}
	printf("\n");
}
  • 文字列を出力するのに,いちいちfor文を書くのは面倒.
  • 配列の先頭アドレスを指定して,%s書式で出力できるようにする
#include<stdio.h>
main()
{
        char str[5];
 
        str[0] = 'R';
        str[1] = 'e';
        str[2] = 'n';
        str[3] = 'a';
	str[4] = '\0';//文字列の終わりを意味するNULL文字
 
	printf("%s\n",str);//%s書式で出力
}

演習

  • 以下のプログラムの実行結果を書き,%s書式は,どこからどこまでの文字を出力するか答えよ.
#include<stdio.h>
main()
{
        char str[7];
 
        str[0] = 'R';
        str[1] = 'e';
        str[2] = '\0';
        str[3] = 'n';
        str[4] = 'a';
	str[5] = 'b';
	str[6] = '\0';//文字列の終わりを意味するNULL文字
 
	printf("%s\n%s\n",str,&str[4]);//%s書式で出力
}

文字配列の初期化

  • NULL文字は勝手に挿入される.
#include<stdio.h>
main()
{
	char str1[] = {'R','e','n','a','\0'};
        char str2[] = "Rena";
 
	int n1 = sizeof(str1);//配列の長さ
 	int n2 = sizeof(str2);//配列の長さ
 
	printf("%s\n",str1);//%s書式で出力
	printf("%s\n",str2);//%s書式で出力
 
	printf("配列の長さは%d\n",n1);
	printf("配列の長さは%d\n",n2);
}

char型のポインタ

  • ちょっと例外(ふつうはポインタ変数の初期化はできない)
    #include<stdio.h>
    main()
    {
    	int *x = {1,2,3};
     
    }
  • char型のポインタ変数は初期化できる
#include<stdio.h>
main()
{
	char *str2 = "Rena";
	char *str1 = {'R','e','n','a','\0'};
 
	printf("%s\n",str2);
	printf("%s\n",str1);
 
}

演習

ポインタ変数pを用いて文字列deを出力するプログラムを書け.

char str[] = {'a','b','c','\0','d','e','\0'};
char *p;
最終更新:2012年05月23日 10:18