Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在2个字符的字符串中遍历字母数字字符_C_Unix_Encryption - Fatal编程技术网

C 如何在2个字符的字符串中遍历字母数字字符

C 如何在2个字符的字符串中遍历字母数字字符,c,unix,encryption,C,Unix,Encryption,我必须遍历所有字母数字字符,包括小写、大写和数字,对于每一个字符,我必须调用crypt命令 所以,我必须检查Aa,Aa,1a,a1,1a,a1等,直到所有可能的组合,并调用crypt KEY crypt_文件 有没有一种有效的方法可以做到这一点 谢谢您可以将字符放入数组中。比如: const char vals[] = { '0', '1', '2', ..., 'a', 'b', ... 'Z' }; // Probably better to generate it programatica

我必须遍历所有字母数字字符,包括小写、大写和数字,对于每一个字符,我必须调用crypt命令

所以,我必须检查Aa,Aa,1a,a1,1a,a1等,直到所有可能的组合,并调用crypt KEY crypt_文件

有没有一种有效的方法可以做到这一点


谢谢

您可以将字符放入数组中。比如:

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
    }
}
inti;
for(i=0;i
最有效的方法是一次生成所有组合并将它们存储在一个文件中。然后读取文件,因为组合不会改变。

在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;
}
#包括
#包括
#包括
#包括
无效交换(字符*,整数);
void gotolop(字符*,整数);
void main()
{
char*ch;
int i,j,k,l;
ch=(char*)malloc(20);
//clrsc();
printf(“输入字符串”;//为您的案例输入aa11
获取(ch);
l=strlen(ch);
戈托洛普(ch,l);
//如果标志!=错误调用加密。
回来
}
void gotolop(char*ch,int l)
{
int i,k;
k=l;

如果(l您使用的是62个字符:0-9、A-Z、A-Z 10+26+26=62。您需要从00到zz的所有可能的两个字符组合。请将它们视为以62为底的两位数:

 0 -> 00
 1 -> 01
10 -> 0A
61 -> 0z
62 -> 10

检查从0到3843的所有数字(62^2-1)并将它们转换为以62为基数的两位数。

本网站为正在编程且陷入困境的用户提供帮助。向我们展示您迄今为止所做的尝试。您还应该尝试让您的问题更清楚,“我必须检查…”?检查什么?样本输入、预期输出、实际输出和代码可以更好地形成一个人们可以帮助你。祝你好运。你需要举个例子,更具体地说明你想做什么。非常感谢。那很有用:)