アルゴリズムとデータ構造 補足資料 5-3
「サンプルプログラム strcat.c 」
横浜国立大学 理工学部 数物・電子情報系学科 富井尚志
文字列の扱い
•文字列は char 型の配列
•文字列の終端は’ \0’
•文字列を結合する場合は、配列の要素一つ一つを転送する。
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10
] s[11
] s[12 ]
H e l l o , \0 ? ? ? ? ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
+
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10
] s[11
] s[12 ]
H e l l o , w o r l d . \0
H e l l o , \0 ? ? ? ? ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
0 j =
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10
] s[11
] s[12 ]
H e l l o , w ? ? ? ? ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
6 i =
0 j =
s[i] = t[j]
H e l l o , w ? ? ? ? ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
1 j =
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10
] s[11
] s[12 ]
H e l l o , w o ? ? ? ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
7 i =
1 j =
s[i] = t[j]
H e l l o , w o r ? ? ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
2 j =
s[i++] = t[j++]
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10
] s[11
] s[12 ]
H e l l o , w o r l ? ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
9 i =
3 j =
s[i++] = t[j++]
H e l l o , w o r l d ? ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
4 j =
s[i++] = t[j++]
s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] s[10
] s[11
] s[12 ]
H e l l o , w o r l d . ?
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
11 i =
5 j =
s[i++] = t[j++]
H e l l o , w o r l d . \0
t[0] t[1] t[2] t[3] t[4] t[5] t[6]
w o r l d . \0
6 j =
(s[i++] = t[j++])!=‘\0’
False!