J'ai un code très simple et lit les caractères des fichiers. Si l'indice y
passe de bas en haut, tout fonctionne. Mais, si ça se passe de haut en bas (la ligne commentée), ça me donne le problème de la faute de seg. Quelqu'un pourrait-il expliquer pourquoi cela arrive? Je vous remercie!Erreur de segmentation (core dumped) si l'index itère à l'envers
void read_ct_from_file(unsigned char** ct, const size_t row, const size_t column, FILE* inf) {
size_t x, y;
for(x = 0; x < row; x++) {
for(y = 0; y < column; y++) {
//for(y = column - 1; y >= 0; y--) { // iterate from high to low
fscanf(inf, "%02x", &ct[x][y]);
printf("%02x ", ct[x][y]);
}
printf("\n");
}
}
Je ne comprends pas bien votre explication, pourriez-vous s'il vous plaît expliquer? Donc la boucle continuera après y = 0? ça ira à y = -1? – drdot
Non, pas -1; size_t est un entier non signé, donc jamais négatif. Après y = 0, y est 2^32-1 – Stefan
Pour comprendre le commentaire de Stefan, vous devez comprendre [overflow] (http://en.wikipedia.org/wiki/Integer_overflow). Avec un entier non signé, vous débordez quand vous allez moins de 0. – RustyTheBoyRobot