Je suis confronté à des problèmes avec la sortie du programme suivant. Le programme génère de manière aléatoire des mots, d'abord une consonne aléatoire puis une voyelle aléatoire, puis de la même manière pour le nombre maximal de lettres que vous souhaitez.
Lorsque j'imprime le mot généré juste après son générée, cela me donne une liste de mots , comme prévu. Lorsque je suis sorti du mot générant et empilant une boucle et imprimez une puissance des mots à nouveau, je reçois tous les mots qui ont été écrasés dans une longue chaîne, c'est vraiment bizarre. Qu'est-ce qui ne va pas? P> sortie: p>
3 Réponses :
Il n'y a pas de place dans le tableau pour le terminateur de chaîne. En conséquence, écrire le terminateur Essayez de changer p> à < / p> '\ 0' code> est un comportement indéfini. En pratique (puisqu'un tableau 2D est contigu)), le terminateur a été écrit à la chaîne suivante, qui a ensuite été écrasée par ses données.
C'est parce que c'est être stocké de manière continue sans aucun caractère nul.
Méthode 1:
Si vous voulez simplement l'imprimer correctement, vous pouvez le faire en écrivant en dessous de la ligne: p> comme p> méthode 2 : p> Déclarez des mots comme p> et écrivez l'intérieur pour boucle comme p>
Votre méthode 1 effraie les Windies de moi mais c'est correct. Avoir un uppote.
Aussi,
Surveillez-vous pour code n'assure pas ... résultant en UB: Les valeurs négatives probables peuvent ensuite revenir de la fonction. P> Int code> Overflow. p>
0 , donc
a * xcur + c code> Les résultats peuvent alors dépasser int_max code> ... p>
int lcg(int Xcur) /*linear congruential generator*/
{
unsigned A = 445, C = 700001, M = 2097152;
int Xnext = (A * Xcur + C) % M;
return Xnext;
}
Veuillez ajouter des sorties attendues et réelles.
Ouais désolé, fait.
Il n'y a pas de place dans la matrice pour le terminateur à chaîne. Essayez de changer
Char Words [Maxletters] [Maxoulettters]; Code> à
Char Mots [Motswords] [Maxletters + 1]; Code>
Bien! bien sûr! Merci
@Meathervane vous devriez poster cela comme la réponse. À moins que quelqu'un puisse être dérangé de creuser un Terminator NULL manquant approprié Dupe.