標準ライブラリ関数 : 文字列操作関数
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です
ヒント:
- printf
- 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です
ヒント:
- 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;
}