網絡学習管理 速習C言語入門3 C exercises (3) string and ctype

C exercises (3) string and ctype

標準ライブラリ関数 : 文字列操作関数

string.hのヘッダファイルをincludeする

主なもの:

strcpy(ss,st):文字列(文字型の配列)ssに文字列stをコピーする
strlen(st):文字列stの長さを求める
strcat(ss,st):文字列ssの後ろに文字列stを連結する
strncpy(ss,st,n):文字列ssに文字列stの先頭n文字をコピーする
strncat(ss,st,n)文字列ssの後ろに文字列stの先頭n文字を連結する

サンプル:

#include <stdio.h>
#include <string.h>       //string.hのインクルードを忘れずに
 
int main(int argc, const char * argv[])
{
     
    // insert code here...
    char str[40];
    char alpha1[] = "ABCDE";
    char alpha2[] = "VWXYZ";
    int length;
     
    printf("alpha1 : %s\n", alpha1);
    printf("alpha2 : %s\n", alpha2);
     
    strcpy(str, alpha1);
    strcat(str, alpha2);
    printf("str : %s\n", str);
     
    length = (int)strlen(str);
    printf("str's length : %d\n", length);
         
    return 0;
}

実行結果:

alpha1 : ABCDE
alpha2 : VWXYZ
str : ABCDEVWXYZ
str’s length : 10

練習問題:
========
(1)文字列に自分の名前を代入して表示してみよう。
(2)(1)で自分の名前の長さの文字列の長さを表示してみよう。
実行例:
自分の名前を半角英数字で入力してください
[Daiichi Koudai]
私の名前はDaiichi Koudaiです
文字数は14です

ヒント:

  1. printf
  2. gets, scanf

標準ライブラリ関数 : 文字操作関数

ctype.hのヘッダファイルをinclude

主なもの:

isalnum(c):文字cが英数字(A-Z, a-z, 0-9)なら真を返す
isalpha(c):文字cが英文字(A-Z, a-z)なら真を返す
isdigit(c):文字cが数字(0-9)なら真を返す
islower(c):文字cが小文字(a-z)なら真を返す
isupper(c):文字cが大文字(A-Z)なら真を返す
tolower(c):文字cが大文字だった場合に小文字に変換して返す
toupper(c):文字cが小文字だった場合に大文字に変換して返す

サンプル:

#include <stdio.h>
#include <ctype.h>        //ctype.hのインクルードを忘れずに
 
int main(int argc, const char * argv[])
{
     
    // insert code here...
    char lo = 'a';
    char up = 'A';
     
    if(islower(lo)) {
        printf("%c を大文字変換 -> %c\n", lo, toupper(lo));
    }
     
    if(isupper(up)) {
        printf("%c を小文字変換 -> %c\n", up, tolower(up));
    }
     
    return 0;
}

実行結果:

a を大文字変換 -> A
A を小文字変換 -> a

練習問題:
(3)(1)で自分の名前を大文字で表示してみよう。
実行例:
自分の名前を半角英数字で入力してください
Daiichi Koudai
私の名前はDAIICHI KOUDAIです
文字数は14です

ヒント:

  1. http://chenlab.net/2016/04/18/c-exercises-2-stdio/

回答:

#include <stdio.h>
#include <ctype.h>        //ctype.hのインクルードを忘れずに
#include <string.h>       //string.hのインクルードを忘れずに
 
int main(int argc, const char * argv[])
{
     
    // insert code here...

  char name[128];
  int i;
  
  printf("自分の名前を半角英数字で入力してください");
  gets(name);
  
    for (i = 0; name[i] != '\0'; i++) 
    {
        name[i] = toupper(name[i]); 
    }
  
    printf("私の名前は%sです\n", name);
    printf("文字数は%dです\n", (int)strlen(name));
    
  getch();
    return 0;
}

 

1 thought on “C exercises (3) string and ctype”

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

C exercises (2) stdioC exercises (2) stdio

標準ライブラリ関数 : 標準入出力関数 標準入出力関数には(C言語プログラミング)で説明した printf() や scanf() の他にも 下のように 1文字専用の入出力関数と 1行専用の入出力関数が用意されている。 標準入力から文字入力 getchar 関数 標準出力から文字出力 putchar 関数 標準入力から文字列入力 gets 関数 […]

C exercises(c) Command line arg.C exercises(c) Command line arg.

今まで、main 関数へ引数なしを意味する int main(void) と記述、 実は main関数にも引数を渡すことができます。 この main関数に渡す引数のことを「コマンドライン引数」といいます。 コマンドライン引数 main関数へ渡せる引数は、 引数の総個数 引数の文字列を指すポインタの配列 の 2つです。 一般に int main(int argc, char […]

C exercises (4) math and utilityC exercises (4) math and utility

数学関数 数学的な計算が必要な場合に使用する命令セットです。引数と返りは全てdouble型になります。 主なもの: sin(x):角度x(ラジアン)のsinの値を返す cos(x):角度x(ラジアン)のcosの値を返す tan(x):角度x(ラジアン)のtanの値を返す pow(x,y):xのy乗の値を返す exp(x):指数関数eのx乗の値を返す log(x):xの自然対数の値を返す log10(x):xの常用対数の値を返す sqrt(x):xの平方根の値を返す ceil(x):小数第一位を切り捨てした値を返す floor(x):小数第一位を切り上げした値を返す round(x):小数第一位を四捨五入した値を返す サンプル: #include <stdio.h> #include <math.h> //math.hのインクルードを忘れずに […]