Hello,
Ecoutez ce problème bizarre: j'ai un prog (avec GMP et Win32) qui plante quand je travaille avec des chiffres très élevés. Je SAIS que ce n'est pas un problème de GMP, mais certainement de mémoire (y a beau dire, j'arrive toujours pas à me faire au C pour ça!!!)
A un moment, il construit un char qu'il sauve dans un fichier et qui s'appelle concat et si tu ouvres le fichier, tu as, par exemple 01011000100100000111 (20 bits). J'ai une boucle qui coupe
cela en deux: concatA et concatB et ajoute un 1 en bit de point faible (à droite quoi):
for(x=0;x<10;x++){
concatA[x]=concat[x];
concatB[x]=concat[x+10];}
strcat(concatA,"1");strcat(concatB,"1");
Pourtant, le programme me répond par exemple (quand il plante)
01011000106648911 et 01000001115601011000106648911 au lieu de 01011000101 et 01000001111, comme si c'était parasité par 664891 et 560101100010664891 (on remarque dans le concatB erroné qu'il y a concatA sans le 1 final...)!
Au début du programme je déclare concat, concatA et concatB ainsi:
char concat[21]={0}; // Je suis jamais sûr si c'est 21 ou 20 que je dois mettre
char concatA[12]={0};char concatB[12]={0}; // idem: 11 ou 12?
et j'affiche ainsi:
bRet = WriteFile(hDestFile,concatA,strlen(concatA),&dwO,0);
bRet = WriteFile(hDestFile,"\r\n ",1, &dwO,0);
bRet = WriteFile(hDestFile,concatB,strlen(concatB),&dwO,0);
Une idée? Parce que là, c'est strange.
concat fait FORCEMENT 20 bits, concatA et concatB doivent en faire 11...
HELP...