J'ai écrit un programme qui tente de "deviner" un mot en choisissant au hasard des caractères. Cependant, mon programme imprime des caractères qui ne figurent pas dans ma liste de caractères. Qu'est-ce qui se passe ici?caractères aléatoires dans c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main(){
int index, i;
time_t t;
char characters[] = "bdefgir";
char word[] = "friedberg";
srand((unsigned)time(&t));
char result[9] = {0};
while(strcmp(result, word) != 0){
for (i = 0; i < 9; i++) {
index = rand() % 8;
result[i] = characters[index];
}
printf("Result:\t%s\n", result);
}
return 0;
}
Votre 'result' n'est pas nul fin après l'avoir rempli; 'strcmp' et' printf ("% s", ...) 'attendent des srings à terminaison nulle. Faire «résultat» 10 caractères de long. –
Ou modifiez% s en% .9s – James
En outre, votre code peut choisir le caractère de terminaison NULL de 'characters', qui a 7 caractères, mais qui a la taille 8: 7 caractères plus un terminateur null. Choisir le nul peut être voulu, mais je suppose que vous ne voulez que choisir parmi les sept lettres du pool de caractères. –