Tôi đang xây dựng một chương trình tạo ngẫu nhiên mật khẩu bằng cách sử dụng tab ascii của các giá trị và chỉ có thể chứa một trong mỗi char. nó tạo ra một mật khẩu dài 8 char.Đặt y [i] biến có thể sửa đổi trong C
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define SIZE 10
char Charactor(char x);
void Check(char* y);
int main()
{
char string[SIZE];//defines varriables
char* point;
point=&string[SIZE];
srand(time(NULL));
for (int i=0;i<SIZE-1;i++)//empties out the string
{
string[i]='\0';
}
for (int i=0;i<SIZE-2;i++)//randomizes a char for each space in the string
{
string[i]=Charactor(*point);
}
Check(point);/checks the string for duplicated values
printf("%s\n",string);//prints string on screen
}
char Charactor(char x)
{
int rnd=0;
rnd=rand()%2;//chooses char or number using ascii
if (rnd==0)
{
rnd=rand()%10+48;
}
else
{
rnd=rand()%26+65;
}
x=(char)rnd;
return x;
}
void Check(char* y)
{
int run=0;
for (int i=0; i<SIZE-2;i++)
{
for (int x=0; x<SIZE-2; x++)
{
if (y[i]==y[x] && run=0)
{
run++;
continue;
}
else
{
y[i]='\0';
y[i]=Charactor(*y);
}
}
}
return;
}
với những thay đổi mã đang chạy bây giờ tôi chỉ cần tìm ra cách thay đổi giá trị chính xác để tôi không có bất kỳ trùng lặp nào.
bài viết được thông báo lỗi thực tế. – Peter
Bạn có lỗi cú pháp trên dòng này: 'Kiểm tra (điểm);/kiểm tra chuỗi cho các giá trị được nhân đôi'; '/' nên là '//' –
Martin đã mô tả vấn đề. Không phải mọi thứ đều có thể sửa đổi (là một giá trị). Điều này '(y [i] == y [x] && chạy)' là đúng hoặc sai. Và bạn không thể cập nhật đúng hay sai thành 0. – dcaswell