標準ライブラリ関数 : 文字列操作関数
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
(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
自分の名前を半角英数字で入力してください 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; }
1 thought on “C exercises (3) string and ctype”