1

salut !
je me demandais si yavais une fction ki le faisait directement ou si j'ai plus k'amettre ma povre routine :
int ch2int(char* str)
{
int i;
int l;
int d=1;
int r=0;
l=strlen(str);
for(i=l;i<0;i=i-1)
{
r=r+((str[i]-48)*d);
d=d*10;
}
return(r);
}


smile

2

g pas trop pigé ton histoire de -48 et *10 mais si tu veux sommer les codes ascii d'une string je dirais

int ch2int(char *str)
{
	int r=0;
	for (int i=0; i < strlen(str); ++i)
	{
		r+=static_cast<int>(str[i]);
	}
	return r;
}


si ca peut t'aider :]
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

3

palpa
a écrit : je me demandais si yavais une fction ki le faisait directement

http://tigcc.ticalc.org/doc/stdlib.html#atoi
C'est une fonction C standard, donc elle devrait être disponible sur n'importe quel système d'exploitation.

PS: Normalement, elle retourne int, mais sous TIGCC, int==short, c'est pour ça qu'elle est documentée comme retournant short au lien indiqué.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

yaro: c pour convertir "348" en 348, je vuex pas le code ascii justement smile
merchi kevin ,je v voir ca smile
l'inverse existe t il ? smile

5

edit : -oublie j'ai dis une connerie-
avatar

6

palpa a écrit :
l'inverse existe t il ? smile

Utilise sprintf.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

sprintf n'est certainement pas le méthode optimale en place et en vitesse pour ca
avatar

8

Mais c'est la méthode standard.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

palpa a écrit :
yaro: c pour convertir "348" en 348, je vuex pas le code ascii justement smile
merchi kevin ,je v voir ca smile
l'inverse existe t il ? smile



oui donc atoi (ascii to integer)
inverse : itoa (integer to ascii)

:]
avatar
Webmaster et développeur du site. Pour tout probleme ou question envoyez un mini message ou mail.

Suivez l'actualité de tous vos site préférés sur yAronews : http://ns.yaronet.com =)

10

Mais ce n'est pas une fonction C standard. La preuve, c'est défini par les headers MinGW seulement sous #ifndef __STRICT_ANSI__. Et TIGCCLIB, par exemple, ne connaît pas du tout cette fonction.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

oui donc atoi (ascii to integer) inverse : itoa (integer to ascii)

une des deux est ANSI, l'autre pas...
(et celle qui n'est pas ANSI ne sera pas forcement presente sur son compilateur)

il me semble que celle qui est ANSI est atoi...
(char * vers int)
et que la non-ANSI est itoa
(int vers char *)
et que c pr ca qu'on utilise sprintf
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

palpa a écrit :
yaro: c pour convertir "348" en 348, je vuex pas le code ascii justement smile
merchi kevin ,je v voir ca smile
l'inverse existe t il ? smile


je dirai:
char *pStr;
unsigned int uNbr=0;
...
while ( *pStr ) uNbr+=*(pStr++) - '0';

13

squale92 a écrit :
il me semble que celle qui est ANSI est atoi...
(char * vers int)
et que la non-ANSI est itoa (int vers char *)

Exact.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

14

smile


d'ailleurs, premiere année d'IUT, prof de C++ qui nous fait faire un programme où on avait besoin d'atoi et itoa... il nous fait de pas utiliser celle qui n'est pas ANSI, parce qu'il veut qu'on utilise que des fonctions ANSI... (sous-entendu, il fallait la réécrire grin)
j'ai fait simple, je suis passé par sprintf grin
le prof qui me demande pkoi je l'ai pas réécrite... "Bah, monsieur, vous avez demandé des fonctions ANSI... sprintf l'est... et vous nous avez encouragé à utiliser les bibliothèques plutot que de réinventer la roue..."
grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

15

-

16

la lenteur certes mais pas la taille.
avatar

17

bah, tu sais, pour un pov programme ligne de commande...
(surtout qd le prof nous fait utiliser MSVC qui crée un projet par default en mode debug, et que le prof nous a jamais dit comment passer en mode release... qui permet des progs plus petits et plus rapide...)
(genre apres t'en a dans la classe qui comprennent pas que leur programme soit 3 fois plus gros et 3 fois plus lent que le mien grin)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

Uther Lightbringer
a écrit : la lenteur certes mais pas la taille.

La librairie C est normalement livrée avec le système d'exploitation.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

merchi pour vos reponses smile
donc atoi et itoa
cool tongue

oué c juste pour un prog en mode txt, dc j'vais po m'faire chier tongue

20

Trust a écrit :
je dirai:
char *pStr;
unsigned int uNbr=0;
...
while ( *pStr ) uNbr+=*(pStr++) - '0';

sa serait plutot :
while ( *pStr ) 
{
 uNbr *= 10;
  uNbr += *(pStr++) - '0';
}


Et l'inverse serait :

while ( uNbr != 0 ) 
{
 *(pStr++) = (uNbr%10) + '0';

 uNbr /= 10;
}
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

21

euh.... Dites, les gars, vous parlez de vitesse et de lourdeur...
bon, la lourdeur. Vi, sprintf est un poil plus lourd que 10 lignes de codes, mais bon, ça marche dans tous les cas (propre même de l'informaticien feigneant grin)
Par contre, la vitesse, vous me faites rire! (c po méchant, mais y'a po d'autre expression)... Vous savez que ce genre de traitement ne se fait qu'une fois les saisies utilisateurs réalisées.... Hors, je vous rapelle qu'un programme passe environ 90% du temps à attendre une saisie de l'utilisateur!!!!!!!!!!!! Alors la vitesse, je pense po qu'il ait un chrono avec le nano dessus grin

Allez, la plus standard: sprintf, scanf... et si vous avez fait IUT ISI, on vous dira:"Toi, tu te fera pirater tout tes programmes grin"

hihihihi

22

scanf -> Beurk neutral

str = gets(stdin);
sscanf(str,"...",...);

Powaaaaaa

scanf ne peut te causer que des pbms, sa a été prouvé par A + B
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

23

gets est une fonction à ne jamais utiliser!!!
C'est une vulnérabilité "buffer overflow" automatique!
Certaines implémentations proposent un getsn ou ngets, mais en général, la fonction à utiliser est fgets(buffer,sizeof(buffer)-1,stdin).
Ou alors scanf("%1234s",buffer), où 1234 est à remplacer par la valeur de sizeof(buffer)-1.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

24

scanf est bcp plus propice a pbm que gets
et je parle pas de programmation "sécurisé"

genre

scanf("%s", &str)

fonctionnera tres bien avec la chaine
"abcd"
mais risque d'avoir des pbms avec
"ab cd"

ngets ou autre gerant la taille du buffer recuperera une chaine jusqu'au prochain \n ou jusqu'au remplissage du buffer

C'est sur que sur TI un buffer overflow va faire planter tout le reseau internet du monde entier triso

d'ailleur quand je parlait de gets, je parlait bien entendu d'une fonction (quelqu'elle soit) recuperant une ligne complete de caractere (cad soit tant que le buffer est pas plein soit jusqu'a un \n)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

25

godzil
: C'est sur que sur TI un buffer overflow va faire planter tout le reseau internet du monde entier

Je te signale qu'ici, on est dans "Programmation PC » C - C++ - C#". roll
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

26

dehors
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

27

while ( *pStr )
{
uNbr *= 10;
uNbr += *(pStr++) - '0';
}

=> ou:
while ( *pStr )
{
uNbr *= uNbr<<3 + uNbr + uNbr;
uNbr += *(pStr++) - '0';
}