2015-04-28 47 views
1

我得到輸入爲argv,argc並且我想根據輸入返回TRUE爲FALSE。我的代碼是:在if語句的布爾表達式中使用指針

int is_valid_regexp(const char* regexp); 
int main(int argc, char *argv[]) 
{ 
    if (!is_valid_regexp(argv[1])){ 
    fprintf(stderr, "wrong regular expression format:%s", argv[1]); 
    return(EXIT_FAILURE): 
    } 
    return (EXIT_SUCCESS); 
} 

int is_valid_regexp(const char* regexp) 
{ 
    do{ 
    if(*regexp == '\\') 
     return FALSE; 
    }while (regexp++ != '\0'); 
    return TRUE; 
} 

程序執行並停止工作。我認爲if(*regexp == '\\') return FALSE有問題 - 如果我排除該部分,該程序運行良好。這與指針問題有關嗎?

+4

'} while(* regexp ++!='\ 0');' – BLUEPIXY

+0

哦,我錯了!謝謝..... –

+1

@BLUEPIXY你能否讓你的評論成爲答案,看到它解決了問題? – Toby

回答

0
}while (regexp++ != '\0'); 

這裏,regexp是一個指針,它等於內存區的地址。 regexp++只是在這個指針的一個位置右移。由於指針的類型是size_t(unsigned __int32),所以你要跳出你的字符串。 使用

`}while (*regexp++ != '\0');` 

解決您的問題。