| |||||
| Dernière réponse | |
|---|---|
| Sujet : [C] Aide sur scanf | |
| LeGreg | ==> le langage C, de Kernighan et Ritchie
J'me repete, je sais.. LEGREG |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| LeGreg | ==> le langage C, de Kernighan et Ritchie
J'me repete, je sais.. LEGREG |
| Eniac | Grand merci pour tes explications, j'y vois plus clair maintenant.
En fait ça m'a tracassé un peu et je suis retourné voir dans mon bouquin, ils disent que dans un premier temps, SCANF ne sert qu'à lire qu'un seul caractère, le premier que l'on écrit. Il parlent qu'il existe plusieurs moyens de contourner cette règle, mais qu'il est préférable d'utiliser le GETS. Mais pour le moment je préfère pas trop m'embrouiller avec ces nouveaux trucs, je préfère bien assimiler tout ce que j'ai vu jusqu'à maintenant...surtout que je suis en plein blocus et que j'ai autre chose à faire :) Bye et à toi aussi joyeux noel & bonne année !!! |
| HelloWorld | un pointeur, c'est comme une adresse internet : c'est un lien
un pointeur, c'est pas une adresse de site mais une adresse mémoire. un lien, ca peut être un lien vers une image, un site, du texte, un exe, un forum ... un pointeur c'est pareil : ca peut pointer sur tout, mais ca reste une simple adresse mémoire = un nombre un pointeur sur un entier et un pointeur sur une chaine de caractere sont tous les deux des nombres = des adresses de 32 bits ici pour obtenir l'adresse d'une variable, il faut utiliser l'opérateur & fait
|
| Eniac | J'y comprend rien :)
Je (on ?) suis débutant en C, j'ai pas encore vu ce qu'étaient les chaînes, les pointeurs, comment fonctionnent les buffers,etc... Tout ce qu'on m'a dit (et j'ai un bouquin qui le confirme) c'est de toujours mettre un & devant le nom de la variable, je sais même pas à quoi ça sert, je pensais bêtement que c'était la syntaxe (si au passage tu pouvais m'expliquer je dirais pas non :) ) A+ |
| HelloWorld | petit rappel :
http://www.lri.fr/~aze/page_c/aide_c/scanf.html si ta chaine est saisie dans la console, elle se termine par "\n" donc toi tu veux lire tous les caractères autres que "\n" donc :
apres notre scanf.
(Borland) testé en entrant "123abc" me renvoit "123" sans planter ...
est nécessaire ("abc" reste) |
| godbout | fgets(buf, "%s", 255) si je me gourre pas.
Et pour les char * y a pas besoin d'un & puisque le nom du char * est deja un pointeur vers le 1er element du tableau |
| Fork | Pour scanner une ligne qui contient des espaces, scanf convient parfaitement : mais il faut connaitre l'astuce qui tue !
La ligne que tu as tapée au clavier est stockée dans un tampon. scanf va te renvoyer tous les caractères jusqu'au premier caractère séparateur... mais le reste du texte est toujours dans le tampon, il suffit de refaire d'autres scanf derrière pour le récupérer : char temp[80]; do { scanf("%s",temp); }while(temp[0]!='\0'); // je suis pas sûr de la condition de sortie ! ... et chaque exécution de la boucle te donne le mot suivant dans le tampon. |
| sisicaivrai |
|
| Eniac | question à 5 balles :
dans un programme, on demande à l'utilisateur d'entrer un certain chiffre. La commande qui suit est scanf("%d",[nom]); Si on met une lettre à la place d'un chiffre, le programme bugge(plein de chiffres défilent à l'écran). Y'a moyen d'éviter ça ? |
| qxn | oui effectivement le gets prends toute la ligne espace compris le scanf s'arrete a l'espace sinon une autre solution etait un while avec un getchar mais ta pas le droit de creer e fonction ;( |
| Eniac | il est débutant, il ne doit pas connaître les "gets"
(remarque, je suis dans le même cas) tu oublies le "&" scanf("%c", &texte); |
| corvincent | #include <stdio.h>
main() { char text[21]; printf("texte:" ); gets(text); printf("%s",text); } voila ça sa tourne |
| Olivier51 | Ben justement non scanf("%s",txt) ne marche pas il ne renvoie seulement que "Bonjour" |
| corvincent | ben scanf("%s",txt);
char txt[22+1] // +1 car \0 de fin de chaine et 22 pour le reste |
| Olivier51 | non seulement en C et sans créer sa fonction ... |
| Alload | Peux-tu utiliser les string (C++)? |
| Olivier51 | Comment fait-on pour stocker une entrée avec des espaces dans une chaîne.
Exemple Je tape : "Bonjour tout le monde" scanf(...,txt); Et je voudrais retrouvé : "Bonjour tout le monde" dans txt et pas seulement "Bonjour". |




