C言語応用 文字列 文字列リテラル 文字列リテラルとは puts(“ABCD”); 上に示すのは、“ABCD”と表示する命令である。この “ABCD”が文字列リテラルである。 文字列リテラルには、最後にヌル文字と呼ばれる、 ‘\0’が付加される。 文字列リテラルの大きさとsizeof sizeof sizeof(型名)は、その型の大きさ(メモリ上に占有する 大きさ)を生成する。 その sizeof には、sizeof 式 という形式もあり、その式 が持つ型の大きさ調べることができる。たとえば i が int 型の変数であれば、sizeof(i)は int 型の大きさ(2 や4など)となる。 http://www.center.nitech.ac.jp/~sfukui/ouyou/list11-1.c 文字列 文字列と文字の配列 C言語では、文字列を「文字(char)の配列」に格納 して処理を行なうことが多い。たとえば”ABC”とい う文字列を使いたければ、配列の先頭か ら ’A’, ’B’, ’C’, ’\0’と格納される。最後のヌ ル文字 ’\0’は、文字列の終端を示す「目印」であ る。 ’A’ ’B’ ’C’ ’\0’ 文字列 文字列の初期化 文字列を表す度に、文字の配列の各要素に1文字 ずつ代入していくのは大変である。そこで、 char str[4] = {‘A’,’B’,’C’,’\0’}; と宣言・初期化できる。さらに簡略記法として、 char str[4] = “ABC”; と宣言することもできる。 文字列 文字列の読み込み scanf 関数に渡す書式指定子は”%s”である。 scanf(”%s”,name); 第2引数は name となっている。&(アドレス演算 子)はいらない。これは name が配列であり、[ ] を伴っていないので、その配列の先頭要素への ポインタとみなされるからである。 http://www.center.nitech.ac.jp/~sfukui/c/list11-2.c 文字列 文字列の長さ 文字配列に対して、常に文字列を一杯に格納す るとは限らない。 char str[8] = ”ABCD”; 配列 str ’A’ ’B’ ’C’ ’D’ ’\0’ 文字列 空き 文字列 文字の末尾には、終端を示す ‘\0’ が必ずあるので、先 頭から ‘\0’ の前までの文字数を数えれば、その文字の 長さを求めることができる。 int strlength(char s[]) { int i ; for(i = 0;s[i] != ‘\0’;i++); return(i); } http://www.center.nitech.ac.jp/~sfukui/ouyou/list11-3.c 文字列 標準ライブラリ strlen 文字列の長さを求める関数は、自分で作成しなく ても、標準ライブラリとして提供されている。 strlen ヘッダ 形式 解説 戻り値 #include<string.h> size_t strlen(const char *s); s の指す文字列の長さ(‘\0’は含まない)をもとめる。 長さである非負の整数を返す。 演習 標準ライブラリ strlen 関数を利用して、次の文字 列リテラル ”AB\tC” ”ABC\0XYZ” の長さを表示するプログラムを作成せよ。 文字列を読み込み、その文字列に含まれている 数字文字’0’,’1’,・・・,’9’の個数を出力するプログ ラムを作成せよ。
© Copyright 2024 ExpyDoc