プログラミング方法論 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 と表示されるようにする。
© Copyright 2024 Paperzz