プログラミング実習II (2025) 課題
[T8] 第7章 文字列
(T8_1) (文字の復習) キーボードから入力された文字を表示するプログラムを作成する.
(T8_2) (文字の復習) キーボードから入力された大文字/小文字を変換して表示するプログラムを作成する.
(T8_3) [リスト 7.3]を入力し,実行せよ.
さらに,以下のプログラムに示される行をそれぞれ適切な場所に写し,文字配列の初期化が適切に行えるか確認せよ.7.1.3項を参考にすること.
なお,strcpy 関数を使用する上では,ライブラリ
/* 以下の行と */
char str2[21] = "It is Tuesday today.";
char str3[] = "It is Tuesday today.";
/* 以下の行をそれぞれ適切な場所に書く */
printf( "%s\n", str2 );
printf( "%s\n", str3 );
(T8_4) 教科書の[リスト 7.4]に関する記述を読んだ上で,NULL 文字が代入されず文字配列の終端がわからない場合の問題を理解せよ.その上で [リスト 7.4] を入力・実行することで,実行結果を確認せよ(実行結果は環境に依存するため,不具合が観察されるとは限らない).
さらに,下に示す内容を書き加えて実行することで,文字配列の要素に値を代入(あるいは初期化)していない状態で生じ得る現象を観察してレポートに記せ.
char buff[ 100 ]; char buff2[ 100 ] = ""; for ( int i = 0; i < 100; i++ ) { printf("%d ", buff[ i ]); } printf("\n"); for ( int i = 0; i < 100; i++ ) { printf("%d ", buff2[ i ]); } printf("\n"); |
(T8_5) 下のプログラムをコンパイル&実行せよ. 標準出力に表示される結果 (1)〜(8) に対して,
なぜそのような文字列が表示されるのかを,次の例に習って説明せよ.
(説明の例)
(0) s = "kwansei" と表示される. これは,この時点での s の内容が 0 1 2 3 4 5 6 7 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │'k' │'w' │'a' │'n' │'s' │'e' │'i' │'\0'│ └──┴──┴──┴──┴──┴──┴──┴──┘ であり,文字列としては "kwansei" を表すからである. |
#include <stdio.h> int main(void) { char s[8]; s[0]='k'; s[1]='w'; s[2]='a'; s[3]='n'; s[4]='s'; s[5]='e'; s[6]='i'; s[7]='\0'; printf("(0) s = \"%s\"\n", s); s[0]='K'; printf("(1) s = \"%s\"\n", s); s[4]='\0'; printf("(2) s = \"%s\"\n", s); s[4]='s'; printf("(3) s = \"%s\"\n", s); s[6]='0'; printf("(4) s = \"%s\"\n", s); s[5]=48; printf("(5) s = \"%s\"\n", s); s[4]=0; printf("(6) s = \"%s\"\n", s); s[0]='\0'; printf("(7) s = \"%s\"\n", s); s[0]='k'; printf("(8) s = \"%s\"\n", s); return 0; } |