nini_404 a écrit :
#include <stdio.h>
#include <stdlib.h>
int main() { long fromage = 555; char lait[] = 'truc';
//la je voudrais rassembler les deux dans une variable char (par exeple "tout[]" )
char all[] = 0;
printf("Entrez 555truc" ); scanf("%c", &all);
if(all==tout) printf("\n\nOui voila!! c'est ca\n\n" ); else printf("non. ce n est pas ca\n\n" );
system("PAUSE" ); return 0; } |
Voila en gros le code que je voudrais faire fait a la vas-vite donc peut etre que 1 ou 2 erreurs sont dissimulées.
|
Oui, elles sont d'ailleurs tellement bien dissimulées qu'on n'arrive pas à les trouver tout de suite...
Bon, on y va pour la liste (non exhaustive) des erreurs
- 'truc' n'est pas une chaîne (mais cela a été déjà dit)
- la variable "all" sera automatiquement configurée pour stocker un seul caractère puisque le compilo croit que tu ne veux que lui mettre la valeur 0.
- le format "%c" de scanf indique à scanf qu'on ne veut saisir qu'un seul caractère or, apparemment, tu souhaiterais faire saisir une chaîne => %s
- la variable "all" contient déjà une adresse. Envoyer "&all" à "scanf" envoie donc l'adresse de cette adresse. Bon, je ne m'étends pas car il faut avoir étudié les pointeurs pour bien comprendre cette notion. Mais pour que cela marche, faut que ta ligne soit => scanf("%s", all)
- if (all == tout) => tu ne fais que comparer deux adresses et non deux chaînes. Il faut bien comprendre qu'en C, une chaîne n'existe pas en tant qu'entité manipulable. Tu ne peux que manipuler l'adresse de son début et ses caractères de façon individuelle. Donc, si tu dois comparer 2 chaînes, il te faut partir du début de chacune et comparer chaque caractère de la chaîne un à un. Heureusement, d'autres programmeurs sont passés avant toi et ont créé la fonction "strcmp()" qui permet de comparer 2 chaînes.
Si tu sais utiliser "printf()", alors tu sais utiliser "sprintf()"
Ex:
printf("Hello\n" ) => Envoie la chaîne "Hello" à l'écran
sprintf(var, "Hello\n" ) => Envoie la chaîne "Hello" dans la variable "var' - A toi de t'arranger pour que "var" soit bien conçue pour pouvoir stocker 6 caractères plus le caractère '\0' de fin de chaîne...
Message édité par Sve@r le 18-09-2006 à 10:02:46
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.