main 関数の中で宣言された大きさ MAX の文字型の配列変数 buff に、標 準入力から入力した文字を格納し、標準出力に表示するプログラムを作成せよ。
/* list0101.c */ #include <stdio.h> #define MAX 20 int main() { char buff[MAX]; fgets( buff, MAX, stdin ); /* ここより下は変更しない */ printf("==========\n"); printf("%s\n", buff); printf("==========\n"); return 0; }
list0101.c を改造し、「abc」という入力に対して、以下の表示になるよ うにプログラムを変更せよ(prac0101.c とせよ)。ただし、list0101.c の中で 「ここより下は変更しない」とある行より上の部分を変更すること。fgets を 使用すること。この条件は以降の課題でも同様である。
========== abc ==========
ヒント:文字列の長さを strlen で測り、もし、文字列の最後の文字(そ の長さ - 1 の文字)が '\n' ならば、何か加工をする。
prac0101.c を改造し、MAX - 1 以上の長さの入力の際に、「Too long message error」と表示をして、エラー終了となるように変更せよ(prac0102.c)。
ヒント:main関数の中で、return を使用すると、プログラムを終了する ことができる。通常、返り値を 0 とすると正常終了、0 以外とすると異常終 了という意味である。
文字列の中に、小文字のアルファベットが含まれていれば、大文字に変換 する機能を prac0102.c に追加せよ(prac0103.c)。
ヒント: ⇒ アスキーコード表
文字列の中に、含まれている数字を1文字ごとに抽出し、その合計値を出 力する機能を prac0103.c に追加せよ(prac0104.c)。
以下に実行例を示す。
> ./a.out abcdefghijklmnopqrstuvwxyz Too long message error > ./a.out c1c2d34E 10 ========== C1C2D34E ==========
次回の演習開始時に集めます。
小レポートは採点後に、いったん返却します。返却されたレポートは各自 がファイルに綴じておいて下さい。最終レポートと同時にそのファイルを提出 してもらいます。その結果、初めて小レポートの点数を、成績に加算します。 大事にしておい下さい。なお、最後にファイルを提出してもらった後、ファイ ルは返却しません。