我需要生成4个从0到8的唯一数字,然后将它们作为字符添加到数组中。我尝试了我在网上找到的这个方法,但它将值更改为48-55。
int main(int ac, char** av) {
char winningCode[5];
if(ac>2 && av[1][0] == '-' && av[1][1]=='c'){
for(int i=0; i<4; i++){
winningCode[i]=av[2][i];
}
}
else{
srand(time(NULL));
for(int i = 0 ; i < 4 ; i++ ) {
int random_number = (rand() % 8);
winningCode[i]=(random_number+'0');
}
}
winningCode[4]=' ';
printf("%dn",winningCode[0]);
printf("%dn",winningCode[1]);
printf("%dn",winningCode[2]);
printf("%dn",winningCode[3]);
printf("%dn",winningCode[4]);
int round = 0;
char ch[6];
printf("Will you find the secret code?nPlease enter a valid guessn");
while(wellplaced(winningCode, ch)<4 && round<10){
read_input(ch);
if(checkInput(ch)){
printf("nRound %dnWell placed pieces: %dnMisplaced pieces: %d",round,wellplaced(winningCode,ch),missplaced(winningCode,ch)-wellplaced(winningCode,ch));
round++;
}else{
printf("Wrong input!n");
}
}
printf("Congratz! You did it!");
return 0;
}
输出:
52
50
54
55
0
代码中的+'0'
将值调整为每个数字的ASCII表示。当您使用%d
格式代码打印单个值时,它打印的是ASCII序数,而不是它所对应的ASCII字符。将格式代码更改为%c
,它就会工作。由于您明确地NUL
-终止,您也可以使用轻松地将它们全部打印在一行上
printf("%sn", winningCode);