-3

プログラムが main で return 0 になると、プログラムは終了しますが、制御はコマンド ラインに戻りません。exit() を試してみましたが、役に立ちませんでした。助言がありますか

int main (int argc, char* argv[])
{

    char name[100];
    char reg[200];
    char replace[200];

    if(argc==3){
        strcpy(reg, ".*");
        strcat(reg, argv[1]);
        strcat(reg, ".*");
    }
    else if(argc==4){

        strcpy(reg, "\\(\\(.*");
        strcat(reg, argv[3]);
        strcat(reg, ".*");
        strcat(reg, argv[1]);
        strcat(reg, ".*\\)\\|\\(.*");
      strcat(reg, argv[1]);
      strcat(reg, ".*");
      strcat(reg, argv[3]);
      strcat(reg, ".*\\)\\)");

        printf("\n%s\n", reg);
//        exit(1);
    }
    printf("\n%s\n", reg);

    strcpy(name, argv[1]);
    strcpy(replace, argv[2]);
    printf("\n%s\n", name);
//  puts(realpath("./b/test2",NULL));
    int reti;
    char msgbuf[100];
    regex_t regex;
   /* Compile regular expression */
   reti = regcomp(&regex, reg, 0);
   if( reti ){ fprintf(stderr, "Could not compile regex\n"); exit(1); }

    list_dir (".", regex, name, replace);


    char line[BUFSIZ];
    FILE *fp2=fopen("source.dat","r");

    if(fp2==NULL)
        printf("Problm opening: source.dat");

    FILE *fp3=fopen("result.dat", "r");
    if(fp3==NULL)
        printf("Problm opening: result.dat");
    char line2[1000];
    int len;

    while( (fgets(line2, BUFSIZ, fp2) != NULL) && (fgets(line, BUFSIZ, fp3) != NULL)) {
        len=strlen(line);
        if( line[len-1] == '\n' )
            line[len-1] = '\0';
        len=strlen(line2);
        if( line2[len-1] == '\n' )
            line2[len-1] = '\0';

        rename(line, line2);
    }

    close(fp2);
    free(fp2);
    close(fp3);
    free(fp3);
    remove("source.dat");
    remove("result.dat");
    regfree(&regex);
   return 0;
}

私のプログラムは意図したとおりに動作しますが、while ループを終了してすべてを解放しても、ctr-C を押さないと制御がコマンド ラインに戻りません。その理由にまだ困惑しています。

4

1 に答える 1