fonction atoi, 00:00 en entrée - C - Programmation
Marsh Posté le 14-09-2009 à 14:30:31
n'utilise pas atoi, utilise strtol, voire sscanf dans ton cas.
Et ton utilisation de scanf est tout à fait foireuse, vu que sizeof "00:00" == 6 et non 5. Utilise fgets.
Marsh Posté le 14-09-2009 à 15:10:01
pourquoi sizeof(00:00) == 6 ? c'est tout des caractères, vous voulez dire qu'il y'a un buffer overflow ? atoi dans les autres cas marchent aussi bien !
sinon je vais voir du côté de strtol et sscanf, merci.
Marsh Posté le 14-09-2009 à 15:30:09
Parce que les chaines de caractères se terminent par \0 en C.
Citation : La fonction atoi() convertit le début de la chaîne pointée par nptr en entier de type int. Le résultat est identique à un appel |
Marsh Posté le 14-09-2009 à 16:21:45
En C, les chaines de caractères ont un caratère nul (zéro binaire) à la fin. Il ne faut jamais oublier de reserver de la place pour ce caractère supplémentaire.
Tout ce qui est entre guillemets, ex. "abc", est une chaine de caractères. Par contre entre apostrophes, il n' y a qu'un caractère unique, ex 'a', sans caractère nul au bout.
Marsh Posté le 14-09-2009 à 14:27:15
Bonjour,
On avait un exercice dans un examen en fin d'année, l'année dernière et je voulais à tout prix le résoudre, en fait il fallait entrer deux heures dans le format 00:00, l'une l'heure de départ d'un vol, et l'autre son heure d'arrivée, sachant que l'avion peut décoller tard la nuit avant minuit et arriver le matin ... bref j'ai fait un petit essai :
le problème c'est que la fonction atoi ne marche pas dans la première fois où elle est appelée, &depart[0] comme argument, or ça marche bien dans les autres appels !
Merci d'avance pour vos éclaircissements !