π
<-

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

C, C++, ASM...

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

Unread postby Chockosta » 06 Oct 2012, 12:37

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 :
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 ?
User avatar
ChockostaPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 2.2%
 
Posts: 213
Joined: 24 Feb 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Math sup

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

Unread postby Levak » 06 Oct 2012, 12:40

Table ascii probablement différente.
Utilise ' ' ou autres à la place des nombres.

exemple : blabla >= '0' && blabla <= '9'
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

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

Unread postby Chockosta » 06 Oct 2012, 15:15

Ah oui, en effet, merci :)

Mais maintenant, c'est avec le système de fichiers que j'ai du mal...
fopen("save.tns","w+") et fopen("./save.tns","w+") créent tous deux le fichier dans "My documents" même si l'exécutable est dans un sous-dossier.
De plus, le fichier, un fois créé, ne peut être ni modifié ni supprimé jusqu'à ce que ndless soit désinstallé.
User avatar
ChockostaPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 2.2%
 
Posts: 213
Joined: 24 Feb 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Math sup

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

Unread postby Levak » 06 Oct 2012, 15:18

fopen => chemin absolu (tu le récupères à la main depuis argv[0])
fichier locké => ça ressemble à un oubli de fclose
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

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

Unread postby Chockosta » 06 Oct 2012, 16:47

Ok, je me suis débrouillé pour récupérer le bon chemin.
Mais je ne comprends pas pourquoi le fichier est lock : je n'ai que deux fopen dans mon code, toujours suivis de fclose...
User avatar
ChockostaPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 2.2%
 
Posts: 213
Joined: 24 Feb 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Math sup

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

Unread postby Levak » 06 Oct 2012, 16:53

Chockosta wrote:Mais je ne comprends pas pourquoi le fichier est lock : je n'ai que deux fopen dans mon code, toujours suivis de fclose...

Et personnellement, j'ai toujours réussi à faire des fclose qui ne lockaient pas le fichier. Donc tu as un endroit dans ton code où le fopen ne fait pas de fclose, comme par exemple une condition d'erreur qui fait que tu ne penses pas à faire de fclose (je ne parle pas du cas où le FD est à NULL).
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

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

Unread postby Chockosta » 06 Oct 2012, 17:37

Effectivement, j'avais fait un return avant le fclose...
Qu'est-ce que je suis bête :P

Merci pour ton aide, tout marche !
User avatar
ChockostaPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 2.2%
 
Posts: 213
Joined: 24 Feb 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Math sup

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

Unread postby Lionel Debroux » 06 Oct 2012, 18:33

Ajoute -Wunreachable-code aux flags du compilateur peut aider à limiter les occurrences de ce genre d'erreurs qu'on fait tous un jour ou l'autre :)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6869
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl


Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1520 utilisateurs:
>1508 invités
>6 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)