|
Craftさんのサンプルを参考に自分なりに組んで見たのですが、
スイッチ用のカウンタ(sw_cnt)とディレクトリパス(dir_path_buf)
が保持されません。どこが悪いのか指摘をお願いします。
何度もすみません。
void main(int argc, char *argv[])
{
char menu_select[MAX_STRING]; /* メニュー選択用変数 */
int i = 0;
int ret = 0; /* 関数戻値変数 */
/* メニュー選択変数初期化 */
memset(menu_select, '\0', sizeof(menu_select));
char *menu_name[MENU] = { "1.フォルダ選択", "2.ファイル一覧", "3.ファイル情報詳細", "4.ファイル編集", "5.終了" };
printf("■メインメニュー\n");
for(i = 0; i < MENU; i++){
printf(" %s\n", menu_name[i]);
}
printf("行ないたい作業のNoを入力し、Enterキーを押してください。\n");
scanf("%s", &menu_select);
getchar();
/* メニュー関数呼び出し */
ret = menu(menu_select);
if(ret != OK){
while(1){
for(i = 0; i < MENU; i++){
printf(" %s\n", menu_name[i]);
}
printf("行ないたい作業のNoを入力し、Enterキーを押してください。\n");
scanf("%s", &menu_select);
getchar();
/* 5が入力されるまでループ */
ret = menu(menu_select);
if(ret == OK){
break;
}
}
}
exit(1);
}
/* メニュ−表示関数 */
int menu(char *menu_select)
{
char dir_path[MAX_STRING]; /* ディレクトリパス用 */
char dir_path_buf[MAX_STRING]; /* ディレクトリパス用 */
int sw_cnt;
int ret = 0; /* 関数戻値変数 */
printf("セレクトNo:%s\n", menu_select);
do{
switch(atoi(menu_select)){
case 1:
printf("フォルダのパスを指定してください。\n");
printf("0でメニューへ、5で終了します。\n");
/* ディレクトリパス変数初期化 */
memset(dir_path, '\0', sizeof(dir_path));
scanf("%s", &dir_path);
/* 5が入力されたら終了 */
if(strcmp(dir_path, "5") == OK){
return OK;
/* 0が入力されたらメニュー */
} else if(strcmp(dir_path, "0") == OK){
ret = menu("0");
if(ret != OK){
return NG;
}
} else {
/* ディレクトリのパスチェック */
ret = chk_path(dir_path);
if(ret == OK){
/* ディレクトリのパスが存在したらパスを引数にしてメニュー表示 */
/* ディレクトリパスをファイル一覧関数用変数にコピ− */
memset(dir_path_buf, '\0', sizeof(dir_path_buf));
strcpy(dir_path_buf, dir_path);
/* case2を選択できるフラグを立てる */
sw_cnt = 2;
printf("カウンタ:%d\n", sw_cnt);
printf("引数:%s\n", dir_path_buf);
ret = menu("0");
if(ret != OK){
return NG;
}
} else {
/* ディレクトリのパスが存在しなかったらメニュー表示 */
sw_cnt = -1;
ret = menu("0");
if(ret != OK){
return NG;
}
}
break;
}
case 2:
if(sw_cnt == 2){
printf("ディレクトリパス:%s\n", dir_path_buf);
/* case1で取得したディレクトリパスを引数ディレクトリ内のファイル一覧を表示させる関数を呼ぶ */
ret = folder(dir_path_buf);
if(ret != NG){
printf("フォルダが指定されていないので一覧の取得出来ません。\n");
return NG;
}
sw_cnt = 3;
}else{
printf("フォルダが指定されていないので一覧の取得出来ません。\n");
}
return NG;
case 3:
if(sw_cnt == 3){
//ファイル詳細情報関数コール
}else{
printf("ファイルが選択されていないので情報の取得が出来ません。\n");
}
return NG;
break;
case 4:
if(sw_cnt == 3){
//ファイル編集関数コール
}else{
printf("ファイルが選択されていないので編集できません。\n");
}
return NG;
break;
case 5:
printf("終了します。\n");
return OK;
default:
printf("メインメニューの1〜5を選択してください。\n");
return NG;
}
}while(1);
return OK;
}
|