網絡学習管理 速習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 (1) guidanceC exercises (1) guidance

C言語プログラミングⅡの試験解説 #2015年度解答付後期C言語2プロ試験問題 C言語検定試験について 主催・認定 サーティファイ情報処理能力認定委員会 試験名 C言語プログラミング能力認定試験 (C-Language Programming Skills Qualification Test) 試験目的 C言語を駆使して応用プログラム(言語処理系、ユーティリティなど)を作成する能力を認定します。 認定基準 一級 C言語を駆使し、応用プログラム(言語処理系、ユーティリティなど)が作成できる能力を有する。 また使用しているOSについて理解をしている。 二級 小規模のプログラム(500行程度)が適切に(理路整然、簡潔、正しく、速く)書ける。 […]

C exercises(d) Scope and Storage classC exercises(d) Scope and Storage class

変数の通用範囲 自動変数のことを局所変数、外部変数のことをグローバル変数(大域変数)ともいいます。 変数のスコープの範囲を図で表してみます。 赤色で囲った部分がグローバル変数の有効範囲です。 青色で囲った部分がローカル変数の有効範囲です。 この図ではローカル変数の寿命を関数内と説明しましたが、正確にはブロック内です。 ブロックとは、{}で囲まれている範囲のことを指しています。 記憶クラス Cで扱う記憶領域は一般に、プログラム領域、静的領域、スタック領域、ヒープ領域の 4つに大別されます。 記憶クラスには、4つあり、自動、静的、外部、レジスタがあります。 記憶クラス 記憶領域 スコープ 記憶クラス指定子 自動変数 スタック { } の内側 […]

C exercises(7) Pointer ArraysC exercises(7) Pointer Arrays

ポインタの配列 複数の文字列をchar型の2次元配列で宣言しました。それを下記に示します。 char kw[3][7] = {"double", "extern", "switch"}; 同様なものをポインタを使って宣言すると、下記のようにポインタの配列となります。 const static char *wday[ ] = { "Sunday", "Monday", "Tuesday", "Wednesday", […]