C言語応用 文字列その2 文字列の操作 文字列の複写 配列 s に中身を”ABCD”にしたければ、 s[0] = ’A’; s[1] = ’B’; s[2] = ’C’; s[3] = ’D’; s[4] = ’\0’; といった具合に、配列の要素に1つ1つ値を代 入することで可能である。 http://www.center.nitech.ac.jp/~sfukui/ouyou/list12-1.c 文字列の操作 標準ライブラリ strcpy strcpy ヘッダ 形式 解説 戻り値 #include<string.h> char *strcpy(char *s1, const char *s2); s1 の指す領域に、s2の指す文字列を’\0’を含めて複写する。 s1の値を返す。 文字列の操作 文字列の連結 char *strconcat(char s[] , const char t[]) { int i,j; for(i = 0;s[i] != ’\0’;i++); for(j = 0;(s[i++] = t[j++]) != ’\0’; ); return(s); } http://www.center.nitech.ac.jp/~sfukui/ouyou/list12-2.c 文字列の操作 標準ライブラリ strcat strcat ヘッダ 形式 解説 戻り値 #include<string.h> char *strcat(char *s1, const char *s2); s1 の指す文字列の末尾に、s2の指す文字列を連結する。 s1の値を返す。 文字列の操作 標準ライブラリ atoi atoi ヘッダ 形式 解説 #include<stdlib.h> int atoi(const char *str); 戻り値 変換された整数値。変換が失敗したときの戻り値は定義 されない。 str の指す文字列を整数に変換する。 文字列とポインタ ポインタと文字列 char str1[] = ”ABC”; char *str2 = ”ABC”; どちらでもよい。 配列 str1[0] str1[1] str1[2] str1[3] ポインタ ’A’ str2 ”ABC” (100) 番地 ’A’ str2[0] ’B’ str2[1] ’C’ str2[2] ’\0’ str2[3] ’B’ ’C’ ’\0’ 100 http://www.center.nitech.ac.jp/~sfukui/ouyou/list12-3.c 文字列とポインタ 文字列の複写 char *strcopy(char *s , const char *t) { char *p = s; while ((*s = *t) != ’\0’){ s++; t++; } return(p); } http://www.center.nitech.ac.jp/~sfukui/ouyou/list12-4.c 文字列の配列 2元配列による実現 s[0][0] ”NA”,”DOHC”の2つの文 字列の配列を、「配列文字 列」の配列として実現する。 配列を要素とする配列は、 2元配列である。 s[0][1] s[0] s[0][2] s[0][3] s[0][4] s[1][0] s[1][1] s[1] s[1][2] s[1][3] s[1][4] ’N’ ’A’ ’\0’ ’\0’ ’\0’ ’D’ ’O’ ’H’ ’C’ ’\0’ http://www.center.nitech.ac.jp/~sfukui/ouyou/list12-5.c 演習 曜日に対応する文字列を表示する関数 void putweekstr(int n){ ・・・ } を作成せよ。たとえばputweekstr(0)は、文字列 ”Sunday” を表示する。 曜日に対応する文字列へのポインタをかえす関数 char *weekstr(int n){ ・・・ } を作成せよ。たとえばweekstr(0)は、文字列 ”Sunday”へ のポインタを返すようにする。 2つの「charへのポインタ」の中身を入れ換える関数 void swapptr(char *x, char *y){ ・・・ } を作成せよ。
© Copyright 2024 ExpyDoc