目次

 

 

 

Top >C言語入門 とりあえずのC言語

7. 文字列:用例

文字列:用例
用例 7.1

 文字定数によって文字列を作成するプログラムです

#include <stdio.h>

main( )
{
    char    hello[6];

    hello[0] = 'H';
    hello[1] = 'e';
    hello[2] = 'l';
    hello[3] = 'l';
    hello[4] = 'o';
    hello[5] = 0;    // 終端に 0 を代入します

    printf( hello );
}
  • 配列の要素に、1文字ずつ代入します
  • 終端の 0 を忘れないようにしてください
用例 7.2

 文字列を入力し、1文字ずつ表示するプログラムです

#include <stdio.h>

main( )
{
    char    str[200];
    int     i;

    scanf( "%s", str );

    for( i = 0 ; str[i] != 0 ; i++ )
        printf( "%c\n", str[i] );
}
  • for文によって配列の要素である文字を1文字ずつ表示します
  • 配列の要素が 0 ではないが、繰り返しの条件です
  • 0ではないは、真(True)を表しますよって、for文を以下のように書くことも出来ます文字列を扱う際には一般的な書き方です
    for( i = 0 ; str[i] ; i++ )
  • scanf関数では、スペース(空白文字)が入力できませんので注意してください
用例 7.3

 文字列を入力し、Aまたはaが、何文字目にあるかを調べるプログラムです

#include <stdio.h>

main( )
{
    char    str[200];
    int     i;

    scanf( "%s", str );

    for( i = 0 ; str[i] ; i++ ){
        if( str[i] == 'A' || str[i] == 'a' )
            break;
    }

    if( str[i] )
        printf( "A,aは%d文字目です\n", i );
    else
        printf( "A,aは含まれていません\n" );
}
  • 文字列を先頭から調べて、Aまたはaが出現したら繰り返しから抜けます
  • for 文の後で、文字列の i 番目が 0 でなければ、Aaが見つかっています
用例 7.4

 2つの文字列を入力し、同じであるかどうかを調べるプログラムです

#include <stdio.h>

main( )
{
    char    str1[200];
    char    str2[200];
    int     i;

    scanf( "%s", str1 );
    scanf( "%s", str2 );

    for( i = 0 ; str1[i] && str2[i] ; i++ ){
        if( str1[i] != str2[i] )
            break;
    }

    if( str1[i] == 0 && str2[i] == 0 )
        printf( "同じ文字列です\n" );
    else
        printf( "違う文字列です\n" );
}
  • 様々な書き方が考えられますが、分かりやすいと思われるものにしました
用例 7.5

 入力された文字列を 3 回繰り返した文字列を作成し表示するプログラムです

#include <stdio.h>

main( )
{
    char    pattern[200];
    char    str[200];
    int     i, j;
    int     n = 0;

    scanf( "%s", pattern );

    for( i = 0 ; i < 3 ; i++ ){    // 3回、繰り返し
        for( j = 0 ; pattern[j] ; j++ )
            str[ n++ ] = pattern[j];
    }

    str[n] = 0;        // 終端の 0

    printf( "%s\n", str );
}
  • 変数 n を使用して、0 番目から順番に文字を代入します
  • str[ n++ ] = は、str の n 番目の要素に代入が行われてから、n がインクリメントされます

 実行結果です

Hello
HelloHelloHello
PAPER BOWL
NEZEN