文字列処理


 
 文字(列)の入力(input) と 出力(output) 

   これまでに、変数の型として、整数型(int型)と倍精度浮動小数点型(double型)を学んできた。あとは、文字型(char型)を学ぶだけで数値計算を主とするプログラムのほとんどの処理が可能となる。コンピュータでいう文字とは1文字であることが多く、名前のように複数の文字の組み合わせでできたものを文字列(string)という。つまり、"a"は文字、"name"は文字列である。
   本プログラムを実行して、2つの文字列を入力してみよう(例えば  Kikai  Kougaku  [Enter])。文字列操作で重要なのは部分的取り出しと結合であるが、このプログラムは、2つの文字列を結合して表示するものである。ただし、空白を含む文字列を入力することはできない。また、プログラム中、11行目のs1、s2において&がいらないことにも注意する。

  注:文字列を使うプログラムについて
   数値計算を主とするプログラムにおいて、文字列の取り扱いが重要になることは少なかった。それはBASICなどの言語では簡単に文字列操作ができたため、特に意識しなくてもよかったからである。C言語では、やや取り扱いが面倒であるが決まったパターンのみを覚えるだけで十分である。
               


  文字(列)の入力(input) と 出力(output) 
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
/* str01.c  : string input & output */
 
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    char s1[256],s2[256];
    char t1[256];
 
    scanf("%s %s",s1,s2);
 
    strcpy(t1,s1);
    strcat(t1,s2);
 
    printf("%s %s\n",s1,s2);
    printf("%s\n",t1);
 
    return 0;
}
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
文字列操作に必要な行 
文字列変数の宣言。254文字まで代入できる。 
同上 
2つの文字列をキーボードから入力する。 
     %s は 文字列の入力に用いる。 
t1にs1を代入する 
t1とs2を連結し、結果がt1に代入される。 
文字列の入力値表示 
文字列の出力値表示 
-
-

 


  数値計算を主とするプログラムでなぜ文字列を扱うのか?
   数値計算が主体のプログラムでも文字列を扱うことは結構ある。
      それは、人間にわかりやすいデータ表示・作成を行う場合やデータファイル名に連番を付加する場合などである。

      サンプルプログラムをリンクとして掲載するので実行して確かめよ。

   ○ 数値と文字列の各種変換方法

         簡単な解説:2つの文字列(二重引用符で囲んでいるもの)を結合し、表示する。
            結合した文字列を実数に変換の上、表示する。
            結合する前の文字列1を整数に変換の上、表示する。
            実数、整数に変換された変数は計算に用いることができるのでテスト演算する。
            それらを再び文字列として変換して表示、さらに結合する順番に注意して結合して表示する。


   ○ 文字列から一部分を抽出する方法  

           このファイルも必要です。   必ずmystrut.c という名前でメインのプログラムと
        同じフォルダに保存(作成)すること。


       簡単な解説: アルファベットの小文字26文字の先頭に#をたして27文字にした文字列を変数に代入します 。
           そこから3文字づつ抽出して表示します。最後がxyzで終わることが確認できます。



 
 空白を含む文字列の入力 

   空白を含む文字列を入力したいときもあるだろう。上のプログラムの11行目を以下の内容に変更し、実行する。この場合、例えば、Miyagiken-   [Enter]   Kikai Taro   [Enter] などと入力する。結果、空白を含む文字列が結合されたはずである。

       ※ 2017/12/06 追記
     gets を使用したプログラムではコンパイル時にwarningが表示されるようになった。
     代替処理は複雑なので、本箇所では限定的に使用する。
 
011:
   gets(s1); gets(s2);
011:
変数s1,s2の内容をキーボードから入力

 


 
 決まった文字を結合する

   プログラム作成段階で、固定したい(既知の)文字列が存在することがある。このような場合、上のプログラムの10行目、11行目を以下の内容に変更し、実行する。例えば、1234   [Enter] などと入力すると、 data1234 のように文字列が結合される。
つまり、予め決まっている文字列は二重引用符で囲み、strcpyを用いて変数に代入することができる。

010:
011:
   strcpy(s1,"data");   
   gets(s2);
010:
011:
既知の文字列の代入
変数s2の内容のみキーボードから入力


 戻る