文字列。 (昨年度)

プログラミング方法論 II
第 4 回(担当:鈴木伸夫)
今日のキーワード:文字列の扱い


(重要)C 言語は基本的に「一つ」の数字しか扱うことができない。記憶は「一次元の箱」。

配列 - 「先頭位置」と「要素数」で「纏めて扱ったつもりになる」

文字列 -「先頭位置」と「終端」で「文字列を扱ったつもりになる」

構造体(後日講義する)
特殊な文字

ナル文字(ヌル文字) \n - 終端文字。

EOF (End Of File) - ファイルの終了を表わす文字。キーボードから入力すると
きは、Unix なら「Ctrl+d」、Windows なら「Ctrl+z」である。


その他の特殊文字:\n(改行)、\t(タブ)など
' ' と " " は大きな違いがある。

' ' は「一つの文字」

" " は「文字リテラル」または「配列に代入する文字の初期化子」
(例)文字列を比較する関数
void strcmp(char src[], char dst[]){
int i;
for (i = 0; src[i] == dst[i]; i++){
if (src[i] == '¥0'){
return 0;
}
}
return ((unsigned char)src[i] -(unsigned char)dst[i]);
}
(注) src == dst では比較できない。
今日のチェック問題(プログラミング方法論 II
学籍番号
第 4 回)授業終了時に提出
名前
1.次のプログラムの誤りを指摘せよ。また理由も述べよ。
(1) char c = "c"
(2) char a[3] = "abc"
(3) putchar("abc");
2.文字列 n[]を与えたとき、その文字列が何行であるかを答える line_count()
関数を作成せよ。例えば
char n[] = "abc¥ndef¥nghi¥njkl";
printf("%d¥n", line_count(n));
とすると画面に 4 と表示されるようにする。
3.この講義に期待すること、本日の感想などを自由に述べてください。
レポート課題(プログラミング方法論 II
学籍番号
第 4 回)第 5 回授業開始時までに提出
名前
1. 次のプログラムを実行すると、画面にはどのように表示されるか?
#include <stdio.h>
int main(){
char a[] = "abc¥ncdf¥0";
char b[] ="efg¥thij¥0klm¥0";
printf("%s %s",a,b);
return 0;
}
2. 次の関数 copystr()はどのような動作をする関数か答えよ。
void copystr(char src[], char dst[]){
int i;
for (i = 0; src[i] != '¥0'; i++){
dst[i] = src[i];
}
dst[i] = '¥0';
}
3.文字列 n[]を与えたとき、その文字列が何文字であるかを答える strlength()
関数を作成せよ。例えば
char n[] = "abc";
printf("%d¥n", srtlength(n));
とすると画面に 3 と表示されるようにする。