我必須迭代所有字母數字字符,包括小寫字母和大寫字母以及數字,每個字符都必須調用crypt命令。因此,我必須檢查Aa,aA,1a,a1,1A,A1等,直到所有可能的組合並調用crypt crypt_file_file。如何遍歷字母數字字符以獲得2個字符的字符串
有沒有一種有效的方法來做到這一點?
謝謝
我必須迭代所有字母數字字符,包括小寫字母和大寫字母以及數字,每個字符都必須調用crypt命令。因此,我必須檢查Aa,aA,1a,a1,1A,A1等,直到所有可能的組合並調用crypt crypt_file_file。如何遍歷字母數字字符以獲得2個字符的字符串
有沒有一種有效的方法來做到這一點?
謝謝
您可以將字符放入數組中。喜歡的東西:
const char vals[] = { '0', '1', '2', ..., 'a', 'b', ... 'Z' }; // Probably better to generate it programatically
雙「for」循環應該這樣做:
int i;
for (i = 0; i < kNumVals; i++) // kNumVals is the number of characters in your array
{
int j;
for (j = 0; j < kNumVals; j++)
{
char myString[3] = {vals[i],vals[j],'\0'};
// Do something with myString
}
}
非常感謝你..這很有用:) – Shwethascar 2012-02-08 21:42:49
最有效的方法將產生一次所有組合並將其存儲在一個文件中。然後只需讀取文件,因爲組合不會改變。
輸入str中的字符列表,即「aA1」。這是檢查像aA1,1Aa等
#include<stdio.h>
#include<string.h>
#include<alloc.h>
#include<conio.h>
void swap(char*,int);
void gotoloop(char*,int);
void main()
{
char *ch;
int i,j,k,l;
ch=(char*)malloc(20);
//clrscr();
printf("Enter the string\n"); //Enter AAaa11 for your case
gets(ch);
l=strlen(ch);
gotoloop(ch,l);
//if flag !=false call encryption.
return;
}
void gotoloop(char *ch,int l)
{
int i,k;
k=l;
if(l<=1)
return;
for(i=0;i<k;i++)
{
swap(ch,k);
l--;
gotoloop(ch,l);
l++;
if(k==2) {
printf("\n%s ",ch);//check this from the list, if not found set FLAG=false
}
}
}
void swap(char *ch,int r)
{
char c;
int i;
c=ch[r-1];
for(i=r-1;i>0;i--)
ch[i]=ch[i-1];
ch[0]=c;
}
所有可能的組合您正在使用62個字符:0-9,AZ,AZ 10 + 26 + 26 = 62。你想從所有可能的二字組合00至zz。把它們當作兩位數字在基座62:
0 -> 00
1 -> 01
10 -> 0A
61 -> 0z
62 -> 10
通過所有數字轉到從0到3843(62^2 - 1)並將其轉換爲兩位數字在基座62
此網站爲編程人員提供幫助。告訴我們你到目前爲止所嘗試過的。你也應該試着讓你的問題更清楚,'我必須檢查...'?檢查什麼?樣本輸入,預期輸出,實際輸出和代碼使得人們可以提供幫助的問題變得更好。祝你好運。 – shellter 2012-02-07 22:59:00
你將需要給予和舉例,並更具體地說明你想要做什麼。 – jkysam 2012-02-07 23:03:15