Fonction scanf help !
Résolu
toinou293
Messages postés
41
Statut
Membre
-
toinou293 Messages postés 41 Statut Membre -
toinou293 Messages postés 41 Statut Membre -
Bonjour,
j'aimerai savoir comment mettre une chaine de caractère en argument pour la fonction scanf. par exemple :
j'aimerai que quand j'ecris play ca m'écrive "boom boom tchak"
merci d'avance
j'aimerai savoir comment mettre une chaine de caractère en argument pour la fonction scanf. par exemple :
int main(int ac, char **av)
{
char *str;
printf("mettez votre commande\n");
while(42)
{
scanf("%s", &str);
if (str == "play")
{
printf("BoOm BoOm TchaK\n");
break;
}
}
}
j'aimerai que quand j'ecris play ca m'écrive "boom boom tchak"
merci d'avance
1 réponse
-
hello
essayer#include <string.h> #include <stdio.h> int main(int ac, char **av) { char str[128]; printf("mettez votre commande\n"); while(42) { scanf("%s", str); if (strcmp(str, "play") == 0) { printf("BoOm BoOm TchaK\n"); break; } } }-
Répondre sans donner d'explication n'est pas constructif, alors j'ajoute à ton code les raisons de modification (en m'adressant à toinou293).
Concernantscanf("%s", &str);tu lui donnes un pointeur sur ton pointeur str. Il faut doncscanf("%s", str);
Ensuite, ton pointeur str n'est qu'un pointeur qui ne pointe nulle part (quelque part plus ou moins aléatoire si je me souviens bien) car tu n'a pas alloué de mémoire "en face".
Donc soit tu fixes une taille comme l'a fait dubcekchar str[128];
soit tu alloues de la mémoire "en face" de ton pointeur avecstr = malloc(128 * sizeof(char));
(à faire suivre d'unfree(str);
quand tu n'en a plus besoin pour libérer la mémoire allouée).
Concernant la comparaisonstr == "play"
, je ne sais pas si ça compile (j'écris sans tester) mais même si c'était le cas ça serait toujours faux. Dis-toi que les (vraies) chaînes de caractères n'existent pas en C, ce ne sont que des caractères à la suite (abusivement appelées "chaîne de caractères" quand même), dont tu as un pointeur sur le premier : str est un pointeur, donc faire "str == [...]" signifie "est-ce que mon pointeur str est équivalent à [...] ?". Pour savoir si tous les caractères sont 1 à 1 égaux, tu as la fonction strcmp qui existe qui retourne 0 s'il n'y a pas de différence entre les deux. -
-
-
-
-