我收到的输入为argv
,argc
,我希望根据输入返回TRUE为FALSE。我的代码是:
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
有问题 - 如果我排除那部分,该程序运作良好。它与指针问题有关吗?
答案 0 :(得分:0)
}while (regexp++ != '\0');
这里,regexp
是一个POINTER,它等于内存区域的地址。 regexp++
只需在此指针的一个位置右移。由于指针的类型是size_t(unsigned __int32),因此您将跳转到字符串之外。
使用
`}while (*regexp++ != '\0');`
解决您的问题。