如何遍历c中字符串的每个可能值?这包括像“&”、“%”或“/”这样的字符。例如,一个 3 字符的字符串可以是“aaa”、“a$f”、“acg”等。
问问题
79 次
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 回答