Witam, czy mógłby mi ktoś sprawdzić na linuxsie po skompilowaniu gcc jakie wyniki daje dla argumentów np.
n= 10 name= Jan Kowalski host= komputer
czy liczba znaków w haśle zgadza się z n i czy nie występują jakieś dziwne znaki?
Pisałem to w dev c++ i na win wszystko działa, ale po skompilowaniu na debianie działy się różne rzeczy(typu dziwne znaki i hasła miały czasami długości różniące się od n) , z tym, że nie wiem czy miałem wtedy akurat tę wersje programu czy może jakąś wcześniejsza, roboczą. Teraz nie mam dostępu do linuxa.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main(int argc, char* argv[])
{
char male[]="abcdefghijkmnoprstuwxyz";
char duze[]="ABCDEFGHJKLMNPRSTUWXYZ";
char cyfry[]="23456789";
char spec[]="@#$%^&*()";
int n;
int i;
int ii;
printf("---------------------------\n");
for (i=1; i<=7; i++)
{
if(!strcmp(argv[i],"n="))
{
ii=i+1;
n = atoi(argv[ii]);
}
if(!strcmp(argv[i],"name="))
{
ii=i+1;
printf("Name= %s ",argv[ii]);
ii=ii+1;
printf("%s\n", argv[ii]);
}
if(!strcmp(argv[i],"host="))
{
ii=i+1;
printf("Host = %s\n", argv[ii]);
}
}
if(n<8 || n>30)
printf("Zla zmienna n");
else
{
int p,q,r,a,b,c,d;
a=0;
q=0;
r=0;
b=0;
c=0;
d=0;
p=0;
for (p=0; p<n; p++)
{
srand ( time(NULL) );
q = (rand()+a%4+b%4+c%4+d%4+q%5)%4;
if (q==0)
{
r=(rand()*p)%23;
printf("%c",male[r]);
a++;
}
if (q==1)
{
r=(rand()*p)%22;
printf("%c",duze[r]);
b++;
}
if (q==2)
{
r=(rand()*p)%8;
printf("%c",cyfry[r]);
c++;
}
if (q==3)
{
r=(rand()*p)%9;
printf("%c",spec[r]);
d++;
}
if (p==(n-4))
{
if (a==0)
{
r=rand()%23;
printf("%c",male[r]);
a++;
p++;
}
if (b==0)
{
r=rand()%22;
printf("%c",duze[r]);
b++;
p++;
}
if (c==0)
{
r=rand()%8;
printf("%c",cyfry[r]);
c++;
p++;
}
if (d==0)
{
r=rand()%9;
printf("%c",spec[r]);
d++;
p++;
}
}
}
}
printf("\n---------------------------");
}