尝试在C中打开文件时,我正在使用重试,并且我想知道这种方式是否是适当的实现,对我来说似乎有点麻烦。

while(openRetry<=3){
    fp = fopen(lgConfig.lgFlHndl.fileName, "rb");
    if(fp==NULL){
        if(openRetry<3){
            openRetry++;
        }
        else{
            if (LogFile_Reconstruct(&lgConfig)){
                ret=1;
                break;
            }
            else{
                ret=0;
            }
        }
    }
    else{
         ret=1;
         break;
    }
}


我将不胜感激或对更整洁的算法有所参考

我正在使用Visual Studio 2010作为IDE
谢谢

最佳答案

至少在我看来,有些更清晰的代码。但这只是为了说明我的想法。

ret = 0;
while (openretry <= 3) {
    fp = fopen(lgConfig.lgFlHndl.fileName, "rb");

    if (fp) {
        ret = 1;
        break;
    }

    openRetry++;
    if(openRetry == 4) {
        ret = LogFile_Reconstruct(&lgConfig));
        break;
    }

    sleep/yield(some millsecs); //Should have some delaying mechanism
}

07-26 01:45