C言語-文字列処理 |
1.3 文字列処理関数
文字列を処理するための関数が標準ライブラリとして用意されている。ここでは、これらの標準ライブラリの使い方を学習する。
(関数strlen)
入力した文字列の文字数を表示する。[pro1-4.c]
#include <string.h> int strlen(char *str); 文字列の長さを得る。 |
#include <string.h>は、関数strlenを使用するときに必要な定義などが書かれているファイルstring.hを取り込むためのものである。(プリプロセッサ命令)
関数strlenの引数として文字列の格納アドレスを指定する。例えば、配列mojiに"abcde"が格納されているとき、strlen(moji) は5という値が得られる。
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: |
#include <stdio.h> #include <string.h> int main(void) { char buff[256]; /* 入力文字列用 */ printf("文字列 : "); /* プロンプト表示 */ gets(buff); /* 文字列入力 */ printf("文字数は%dです\n", strlen(buff)); /* 入力文字数計算・表示 */ return(0); } |
文字列 : abcd 文字数は4です |
入力した文字列(英小文字)を大文字に変換して表示する。[pro1-5.c]
英小文字を大文字に変換するには、文字コード表からもわかるように、英小文字の文字コードから0x20を減じれば大文字の文字コードに変換できる。
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: |
#include <stdio.h> #include <string.h> int main(void) { char buff[256]; /* 入力文字列用 */ int n; /* for文用 */ printf("英小文字 : "); /* プロンプト表示 */ gets(buff); /* 文字列入力 */ for(n = 0; n < strlen(buff); ++n) buff[n] = buff[n] - 0x20; /* 大文字変換 */ printf("文字列は%sです\n", buff); /* 入力文字列表示 */ return(0); } |
英小文字 : abcde 文字列はABCDEです |
if(buff[n] >= 'a' && buff[n] <= 'z') /* buff[n]がa〜zの範囲にあれば真 */
【練習問題1-2】 入力した文字列の英大文字だけを小文字に変換して表示する。 [ren1-2.c]
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: |
#include <stdio.h> #include <string.h> int main(void) { char buff[256]; /* 入力文字列用 */ int n; /* 文字数用、for文用 */ printf("文字列 : "); /* プロンプト表示 */ gets(buff); /* 文字列入力 */ for(n = 0; @ ; ++n) if(A ) /* buff[n]が小文字? */ buff[n] = buff[n] + 0x20; /* 大文字変換 */ printf("文字列はB です\n", buff); /* 入力文字列表示 */ return(0); } |
文字列 : abc123deXyZ 文字列はABC123DEXYZです |
入力した2つの文字列の文字数の合計を表示する。[pro1-6.c]
2つの配列、例えばbuff1, buff2を用意し、文字列入力後、次に各文字列の長さを次の式で加算する。
len = strlen(buff1) + strlen(buff2);
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: |
#include <stdio.h> #include <string.h> int main(void) { char buff1[256]; /* 入力文字列 */ char buff2[256]; /* 入力文字列 */ int len; /* 文字数 */ printf("文字列1 : "); /* プロンプト表示 */ gets(buff1); /* 文字列入力 */ printf("文字列2 : "); /* プロンプト表示 */ gets(buff2); /* 文字列入力 */ len = strlen(buff1) + strlen(buff2); printf("文字数は%dです\n", len); /* 文字数表示 */ return(0); } |
文字列1 : abcd 文字列2 : efgh 文字数は8です |
Copyright © 2001 Hiroshi Masuda |