Problème avec la manipulation de chaines de caractères

Bonjour !
En ce moment, comme vous le savez peut-être, je travaille sur mon projet nCraft.
Pour charger un fichier sauvegardé, j'ai besoin de récupérer des nombres dans des chaines de caractères.
J'ai donc bricolé cette fonction :
Elle marche à merveille lorsque je l'utilise dans un programme en console sur mon ordi, mais lorsque je l'utilise sur l'émulateur, ça marche plus du tout.
Par exemple scanInt("4 ") renvoie 4 sur l'ordi et 0 sur l'émulateur.
Et, encore pire, scanInt(" 4 ") renvoie 4 sur l'ordi et donne une boucle infinie sur l'émulateur. (bon je devrais rajouter une protection pour éviter ça)
Pourtant '4' correspond au même nombre sur calculette et ordi...
Quelqu'un saurait-il pourquoi ça agit aussi bizarrement ?
En ce moment, comme vous le savez peut-être, je travaille sur mon projet nCraft.
Pour charger un fichier sauvegardé, j'ai besoin de récupérer des nombres dans des chaines de caractères.
J'ai donc bricolé cette fonction :
- Code: Select all
int scanInt(char *str)
{
int start=0;
int i=0;
int number=0;
while(str[start]<48 || str[start]>57);
{
start++;
}
i=start;
while(str[i]>=48 && str[i]<=57)
{
number*=10;
number+=str[i]-48;
i++;
}
return number;
}
Elle marche à merveille lorsque je l'utilise dans un programme en console sur mon ordi, mais lorsque je l'utilise sur l'émulateur, ça marche plus du tout.
Par exemple scanInt("4 ") renvoie 4 sur l'ordi et 0 sur l'émulateur.
Et, encore pire, scanInt(" 4 ") renvoie 4 sur l'ordi et donne une boucle infinie sur l'émulateur. (bon je devrais rajouter une protection pour éviter ça)
Pourtant '4' correspond au même nombre sur calculette et ordi...
Quelqu'un saurait-il pourquoi ça agit aussi bizarrement ?