sscanf et la saisie d'une chaine de caractère - C++ - Programmation
Marsh Posté le 26-05-2003 à 10:13:27
ya pas une ligne qui tiennent la route dans ton prgramme. les deux déclarations c'est géniales, mais y a pas d'allocation, le sscanf, t'as pas compris grand chose au pointeurs, et pour le fflus, il ne sert à rien car cette instruction n'a aucun effet
sinon pour ton problème tu peux effectivement utiliser sscanf, ou rechercher à la main des espaces
Marsh Posté le 26-05-2003 à 10:39:15
Code :
|
et quand je tape :
cd chemin
il me retourne rien au printf
bon là je crois que ça devrait être un peu plus correcte
le problème, je crois, viens de mon gets mais je comprends pas pourquoi.
si j'ai bien compris :
int sscanf (char* text, char* format, ...);
veut dire que le premier paramètre est le texte qu'on veut formaté, en second on met le format et en troisième les variables ou on doit les mettre. et c bien ce que je fais non ?
et :
char *gets (char *s);
ça lit bien une chaine de caractère et la place dans s (dans mon cas ça sera dans "choix_menu" ).
Marsh Posté le 26-05-2003 à 10:46:51
1) ne jamais utiliser gets, mais fgets
2) une allocation pour une chaine, ça te dit un truc?
Marsh Posté le 26-05-2003 à 10:55:02
Code :
|
et bah euh ça marche tjrs pas. bah en fait ça m'affiche
" fichier."
quand je tape "quit"
euh sinon l'allocation pour une chaine c réservé un espèce en mémoire pour pouvoir placé la chaine.
Marsh Posté le 26-05-2003 à 10:56:59
gnere des truc comme [] et malloc ça te dit toujours rien?
Marsh Posté le 26-05-2003 à 11:02:56
Citation : |
non on a pas vu ça justement et je vois ça assez souvent dans les programmes sans vraiment comprendre à quoi ça sert.
mais mon problème viendrait de quoi alors parce que là j'ai plus qu'une semaine pour finir et j'ai 6 procédures en assembleur derrière.
il faudrait que je fasse un malloc sur l'initialisation de mes variables c ça ?
Marsh Posté le 26-05-2003 à 11:06:40
LordAnkou a écrit :
|
Oui.
En déclarant tes char * tu n'alloues pas la mémoire nécéssaire au stockage des chaines de caractères que tu essayes d'y mettre...
Taz te suggérait aussi en parlant de [] d'utiliser directement des tableaux plutot que des pointeurs, vu que tu ne sembles pas connaitre bien les pointeurs...
[edit]
grillaid
Marsh Posté le 26-05-2003 à 11:14:42
Code :
|
bon là j'alloue bien de l'espace en mémoire et ça marche tjrs pas.
je comprends vraiment pas.
Marsh Posté le 26-05-2003 à 11:20:11
Code :
|
bon là je me trompe pas c bien ça ?!?
Marsh Posté le 26-05-2003 à 13:20:20
c définitivement mon fgets qui déconne !
il m'affiche un bout de mot (tjrs le même : "chier." qui ne sort de je ne sais ou !
mais ou est mon erreur please !!!
Code :
|
je vois vraiment pas d'ou vient mon erreur là.
j'ai bien attribué la bonne taille pour la mémoire
j'ai fait gaffe aux pointeurs...
bref là je sèche trop aider moi please
Marsh Posté le 26-05-2003 à 13:25:04
ton sizeof renvoie la taille du pointeur, aps de la zone pointée. ce n'est pas un tableau.
Marsh Posté le 26-05-2003 à 13:36:59
Code :
|
en effet j'avais oublié que j'avais change mon choix_menu pour y mettre un pointeur mais bon maintenant que j'ai modifié ça je n'ai pas le temps de saisir ma chaine et étant donné que le bout de code ci dessus est dans une boucle il boucle tout le temps sans que je puisse saisir mon code. c pas trop normal parce que là je fais attention à la taille de la zone pointée.
Marsh Posté le 26-05-2003 à 13:39:59
t'as rien compris. utilise une constante pour à la place du sizeof qui ne marche pas. achete toi aussi un bouquin de C
Marsh Posté le 26-05-2003 à 14:11:12
j'utilise 100 et ça marche pas...
si je résume j'utilise un pointeur auquel j'attribue une taille de 100.
ensuite je fais un fgets(choix_menu,100,stdin); donc je lis ma chaine jusqu'au caractère de saut de ligne et je le mes dans choix_menu.
ensuite je fais un printf de mon choix_menu.
mais ou est l'erreur ?
en ce qui concerne ce que tu marques ensuite :
tu penses que j'ai le temps de lire un bouquin sachant que je dois finir pour ça demain soir...
et je sais que j'ai pas tout compris mais c pas en me disant : "t'as rien compris, achète toi un bouquin de C (et dégage)." que je vais avancer. c un forum non ?
Marsh Posté le 26-05-2003 à 14:21:15
LordAnkou a écrit : j'utilise 100 et ça marche pas... |
Là il t'affiche quoi?
Marsh Posté le 26-05-2003 à 14:26:36
Code :
|
au premier fprintf il m'affiche "commande : "
et au deuxième il m'affiche " fichier."
Marsh Posté le 26-05-2003 à 09:45:37
bon voila je voudrais saisir une commande entrée dans le programme du style, et je voudrais récupérer les deux mots séparés (sans utiliser strtock y'a pas droit snif ! ça marchait avec strtock en plus) :
cd chemin
put fichier
dir
quit
et j'essaie avec sscanf mais j'y arrive pas (j'ai du mal avec la syntaxe de la fonction).
mais le problème quand je laisse ça c que je peux même pas taper ma chaine de caractère !
alors que je voudrais par exemple en tapant :
"cd chemin"
avoir "cd" dans 'commande' et "chemin" dans 'nom'
et si je tape seulement "quit" ou "dir" qu'est ce que je risque d'avoir dans 'nom' ?
---------------