C 在if语句的布尔表达式中使用指针
我得到的输入是C 在if语句的布尔表达式中使用指针,c,pointers,C,Pointers,我得到的输入是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):
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=='\\')返回FALSE有问题
-如果排除该部分,程序运行良好。这和指针问题有关吗
}while (regexp++ != '\0');
这里,regexp
是一个指针,它等于内存区域的地址regexp++
只需将指针向右移动一个位置。由于指针的类型是size\u t(unsigned\u int32),所以您可以跳出字符串。
使用
来解决您的问题。
}while(*regexp++!='\0')哦,我弄错了!谢谢……@BLUEPIXY,既然你的评论解决了这个问题,你能给出一个答案吗?
`}while (*regexp++ != '\0');`