【发布时间】:2018-07-11 17:04:23
【问题描述】:
我打算将数字数据类型分配给 char 变量。 代码是这样的:
#include <stdlib.h>
#include <stdio.h>
typedef unsigned short ushort;
typedef unsigned u;
ushort getRandomNumber(){
return (ushort)(rand() % 9);
}
ushort getASCII(char Char) {
return (ushort)Char;
}
char getRandomChar() {
ushort chance = (rand() % 2) + 1;
const ushort aASCII = 97 , zASCII = 122 , AASCII = 65 , ZASCII = 89;
if(chance == 1)
return (char)(aASCII + (rand() % (zASCII - aASCII)));
else
return (char)(AASCII + (rand() % (ZASCII - AASCII)));
}
int main(void) {
srand(time(NULL));
ushort size;
puts("Enter password size : " );
fflush(stdout);
scanf("%i" , &size);
if(size >= 4) {
char Password[size + 1];
for(ushort i = 1 ; i <= size ; ++i){
ushort chance = (rand() % 2) + 1;
if(chance == 1)
Password[i] = getRandomChar();
else
Password[i] = getRandomNumber();
}
printf("%s" , Password);
return EXIT_SUCCESS;
}
else {
puts("Error. Try again");
}
}
它不会返回任何错误,但会打印与 ASCII 码匹配的字符。所以这段代码不会是正确的。
原始代码是一个随机密码生成器,我知道它不是很好且安全。随机数在输出中显示为 ASCII 字符。
我在 Google 上搜索但没有有用的结果。只有this,但它是相反的过程。 它的命令/算法是什么?
感谢您的帮助。
编辑:这里的问题是我将 int 分配给包含我不想显示为数字的字符的 char 数组。
【问题讨论】:
-
printf("%d", b)会做... -
您没有为 char 数组分配任何内容。您的代码中没有数组。
-
目前还不清楚你想用
int a做什么。 原始数组还有一个分配了空值的节点。然后请edit你的问题包含实际代码,这样我们就可以停止在黑暗中拍摄。 -
是的,这很重要,您在 25 分钟前提出了这个问题,并且针对多个问题提出了多种解决方案,但都没有回答您的实际问题,这仍然是未知的。
-
你希望这个程序输出“e123d4”吗?