是否可以进行行号" x"

时间:2015-01-22 14:55:00

标签: c

让我解释一下自己,我不知道是否可能,所以我会用伪代码写它

while (condition)
{
     do the action in line number x;
     x++;
}

e.g 如果我的代码中的第40行包含以下行: " printf的("你好");" 然后程序将打印" Hello"然后检查条件,如果条件为真,那么它将在第41行进行操作。

2 个答案:

答案 0 :(得分:1)

而不是going / jumping to line X, perform and come back的想法,我们如何组合一些语句,创建一些function,逐个调用它们并开始我们的工作做了什么?听起来很酷?

好的,让我告诉你如何做到这一点,你将编写代码。同意? : - )

  1. 采取第一个要求[至少1位数]。写一个函数,比如int checkForDigit(const char *ip, int size),它将检查数组的所有元素[upto size],当它找到一个数字时,它将返回0,否则,最后返回1
  2. 采取第二个要求,[至少1个小写字母]。写一个函数,比如int checkForSmallCase(const char *ip, int size),它将检查数组的所有元素[upto size],当它找到一个小写字符时,它将返回0,否则,最后,返回1.
  3. 继续添加单独的功能以满足单独的验证需求。
  4. 现在,在您的代码中,

    1. 定义一个标志变量,并将其设置为某个默认值,可能是-1
    2. 输入您的密码 string ,计算尺寸。
    3. 使用密码字符串和长度调用数字检查功能。收集flag变量中的返回值。
    4. 逐个调用所有其他验证函数,并将返回值存储在flag中。
    5. 最后,如果所有验证都成功,则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;
}