-3

如何遍历c中字符串的每个可能值?这包括像“&”、“%”或“/”这样的字符。例如,一个 3 字符的字符串可以是“aaa”、“a$f”、“acg”等。

4

1 回答 1

1

如果您预先知道限制,并且限制很低,则可以使用嵌套循环。例如,for thee-character 字符串使用三个嵌套循环,如下所示:

char str[4] = "---";
for (str[0] = ' ' ; str[0] <= 'z' ; str[0]++) {
    for (str[1] = ' ' ; str[1] <= 'z' ; str[1]++) {
        for (str[2] = ' ' ; str[2] <= 'z' ; str[2]++) {
            printf("%s\n", str);
        }
    }
}

如果您不知道预先的长度,则需要使用递归。这个想法是在每个级别的递归调用中实现一个循环,当您处于所需的深度时终止。

char *str = new malloc(n+1);
str[n] = '\0';
all_strings(str, n-1);

void all_strings(char *str, int n) {
    if (n == -1) {
        printf("%s\n", str);
    } else {
        for (str[n] = ' ' ; str[n] <= 'z' ; str[n]++) {
            all_strings(str, n-1);
        }
    }
}
于 2012-09-23T01:40:58.230 回答