J'étudie pour mon test et je suis tombé sur un code décent avec des résultats bizarres. Je comprends le résultat des deux premières lignes dans main(), mais je ne comprends pas pourquoi mon ordinateur imprime la réponse comme l'image !!Pourquoi le dernier code renvoie-t-il un tel résultat? (en C)
#include <stdio.h>
void printstring(char s[]) {
int i;
for (i = 0; i < 10; i++)
printf(" s[%d]", i);
printf("\n");
for (i = 0; i < 10; i++)
printf("%5c", s[i]);
printf("\n");
for (i = 0; i < 10; i++)
printf("%5X", s[i]);
printf("\n");
printf("\n");
}
main() {
printstring("I am beautiful");
printstring("beautiful");
printstring("");
}
Vous appelez * undefined behaviour * en accédant à la longueur réelle de la chaîne – UnholySheep
Je suis complètement nouveau à C donc je ne suis pas sûr de savoir pourquoi c'est un comportement indéfini. –
Combien y a-t-il de caractères dans '" beautiful "'? Combien dans '" "'? Que pensez-vous qu'il se passe quand vous sortez des limites d'un tableau (et que les littéraux * sont des tableaux)? –