#include #define MAXCHAR 10 /* 10 文字分ってやつ */ void main () { char str[MAXCHAR + 1]; /* ※文字列なので '\0' の分も加味する */ char *strptr = 0; int input, atmark; atmark = 0; /* 終了フラグ: 行頭での '@' 出現で 1 になる */ while (atmark < 1) { /* 終了条件 atmark == 1 になるまで繰り返し */ printf("文字列を入力して下さい:"); strptr = str; while ((input = getchar()) != '\n') { /* '\n' が出現するまで繰り返し */ if (strptr < str + MAXCHAR) { /* 最大文字数に達するまで繰り返し */ if (strptr == str) { /* 行頭 (strptr と str のアドレスが同じ) の時のみの処理 */ if (input == '@') { atmark = 1; /* 行頭が '@' ならフラグを立てる */ } } else { /* 2 桁目以降が '\n' 以外のときは atmark を初期化する */ atmark = 0; } *strptr++ = input; /* 入力を変数エリアに格納してアドレスをインクリメントするる */ } else { /* 最大文字数に達したのでループを抜ける */ break; } } if (atmark == 0) { /* 終了条件を満たしていないので結果を表示する */ *strptr = '\0'; /* ASCIIZ 文字列にする */ printf("入力された文字列:%s\n", str); } while (input != '\n') { /* 入力バッファをクリアする */ input = getchar(); } } printf("*** プログラムを終了します ***\n"); }