以下のプログラムで、Inout dataの中で、"END"と入力されたら、終了する条件を追加したいんですけど、どうすればいいでしょうか?
returnを使っても、次に入力が進んでしまいます(汗)
NOT_END等を使用して、メインにアドレス返却する方法を使うみたいですけど、よく分かりませんm(_ _)m
#include <stdio.h> #include <string.h> #define PERSONDATA_MAX 2 /* 個人データの最大件数 */ #define NAME_MAX 19 /* 名前の最大文字数 */ #define BUF 256 /* 一時領域の大きさ */ int name(char); typedef struct person /* 個人データ構造体の宣言 */ { char name[NAME_MAX+1]; /* 名前 */ double height; double weight; double l; double r; }Person; void sort_data(Person *, int); void disp_data(Person *, int); void input_data(Person *); int main(void) { int cnt; Person member[PERSONDATA_MAX]; /* 構造体配列の定義 */ for(cnt = 0 ; cnt < PERSONDATA_MAX ; cnt++) { input_data(&member[cnt]); sort_data(&member[0], PERSONDATA_MAX); } disp_data(&member[0],cnt); /* 出力関数呼出し */ return 0; } void disp_data(Person *pmem, int max_cnt) /* 入力データ表示関数 */ { int cnt; /* ループのカウンタ */ printf("\n********Nama***********Hi*****We***(L) Eye (R)**\n"); for(cnt = 0 ; cnt < PERSONDATA_MAX ; cnt++) { sort_data(&pmem[0], PERSONDATA_MAX); printf("%-*s %5.1f %5.1f %5.3f %5.3f\n",NAME_MAX,&pmem[cnt].name[0],pmem[cnt].height,pmem[cnt].weight,pmem[cnt].l,pmem[cnt].r); } printf("\n"); return; } void input_data(Person *pmem) /* データ入力関数 */ { char buf[BUF]; while(1) { printf("\nName : "); scanf("%s",&buf[0]); /* 名前の入力 */ if(strlen(&buf[0]) <= NAME_MAX) /* 入力文字数のチェック */ { strcpy(&pmem->name[0],&buf[0]); break; /* メンバにコピー */ } printf("\nSorry. Input less than %d characters.\n", NAME_MAX+1); } printf("Height : "); scanf("%lf",&pmem->height); printf("Weight : "); scanf("%lf",&pmem->weight); printf("Eye(L) : "); scanf("%lf",&pmem->l); printf("Eye(R) : "); scanf("%lf",&pmem->r); return; } void sort_data(Person *pmem, int max_cnt) { int cnt1; int cnt2; Person temp; for(cnt1 = 0; cnt1<max_cnt-1; cnt1++) { for(cnt2=cnt1+1; cnt2<max_cnt; cnt2++) { if( (pmem +cnt1)->height > (pmem +cnt2)->height ) { temp = *(pmem +cnt1); *(pmem +cnt1) = *(pmem +cnt2); *(pmem +cnt2) = temp; } } } }