让我解释一下自己,我不知道是否可能,所以我会用伪代码写它
while (condition)
{
do the action in line number x;
x++;
}
e.g 如果我的代码中的第40行包含以下行: " printf的("你好");" 然后程序将打印" Hello"然后检查条件,如果条件为真,那么它将在第41行进行操作。
答案 0 :(得分:1)
而不是going / jumping to line X, perform and come back
的想法,我们如何组合一些语句,创建一些function
,逐个调用它们并开始我们的工作做了什么?听起来很酷?
好的,让我告诉你如何做到这一点,你将编写代码。同意? : - )
int checkForDigit(const char *ip, int size)
,它将检查数组的所有元素[upto size
],当它找到一个数字时,它将返回0,否则,最后返回1 int checkForSmallCase(const char *ip, int size)
,它将检查数组的所有元素[upto size
],当它找到一个小写字符时,它将返回0,否则,最后,返回1. 现在,在您的代码中,
-1
。最后,如果所有验证都成功,则flag将具有值0
。考虑密码有效。否则,请求新密码。
答案 1 :(得分:1)
我正在执行一项功能,通过某些参数检查密码是否有效(至少1个数字,至少1个小写字母,至少1个大写字母等等),并且每个不同的参数都在一个函数,我希望程序停止,如果一个参数不是有效的,并且有很多"如果"陈述很丑陋。
以下是如何在没有这么多if
语句的情况下进行多项检查的示例。要添加其他测试,您只需将函数及其错误消息添加到testfunc
/ errormess
数组。您根本不需要修改checkPassword
功能:
int testContainsDigit(char *password);
int testContainsLowerCase(char *password);
int testContainsUppercase(char *password);
int (*testfunc[])(char*) = { testContainsDigit, testContainsLowerCase, testContainsUppercase, NULL };
char *errormess[] = { "Must contain at least one digit", "Must contain lower case character", "Must contain upper case character", NULL };
int checkPassword(char *password) {
// Apply all checks and print error message for each failed check
// Return 0 on success, -1 if bad password.
int goodPassword = 0;
for (int i = 0; testfunc[i] != NULL; i++) {
if ((testfunc[i])(password) != 0) {
printf("%s\n", errormess[i];
goodPassword = -1;
}
}
return goodPassword;
}