2012-09-23 35 views
-3

如何運行c中每個可能的字符串值?此包括個字符,如'&','%'或'/'。例如,一個3個字符的字符串可以是「aaa」,「a $ f」,「acg」等。運行C中每個可能的字符串值?

+0

幾乎與實現大整數的方式相同。 – nhahtdh

+0

喜歡?你能舉個例子嗎? – Ray

+0

你的問題很含糊。你能否詳細解釋一下?你的意思是你想迭代字符串並測試它中的字符是否屬於某個集合,或者你的意思是別的嗎? – nonsensickle

回答

1

如果您知道預先限制,並且限制較低,則可以使用嵌套循環。例如,對於你字符字符串使用三個嵌套循環,像這樣:

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); 
     } 
    } 
} 
+0

你不需要遞歸,除了你需要它來枚舉整數...這就是這個需求,在一個大型的基地。 –

+0

@JimBalter真的,除了在這種情況下的基數很大的情況下:)我也認爲應用嵌套循環或遞歸需要較少的精力來理解需要編寫更多代碼(並且沿途失去一點效率)。 – dasblinkenlight

相關問題