Pb de variable

sbbichette Messages postés 14 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 00:04
sbbichette Messages postés 14 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 17:18
Bonjour,
voila mon pb.
Je n'arrive pas à recuperer mon print dans une variable.
Voila mon code:

Print("%.*s", readbytes, data);

J'obtiens bien à l'écran mes données.
Par contre je voudras pouvoir avoir ces données dans une seul variable exemple:

Mavariable = readbytes, data;
Print Mavariable;

et obtenir le même resultat.

Merci.

9 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
17 juil. 2009 à 08:15
Salut
Je ne suis pas sur d'avoir bien compris, mais je pense que tu veux faire cela:
char Buff[100];
scanf("%s",Buff);


A+ ____________________________________________________________________________
Mon site internet : [url=http://ImAnalyse.free.fr
/url 
0
Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009
17 juil. 2009 à 10:42
Sauf que scanf récupère le premier "mot" .. et certaines implémentations s'arrêtent des qu'un espace est rencontré.

; I'm just keeping the hopeless cross to increase the meaninglessness
0
sbbichette Messages postés 14 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 10:53
Bonjour,
désolé mais ce n'est pas ça.

("%.*s", readbytes, data); //sont des valeurs que je récupère d'une connection et le print me permet de les afficher à l'écran.

Maintenant, je voudrais traiter ces information.
Exemple:
Suposons qu'à l'écran il s'affiche:
Voiture1 = rouge
Vitesse1 = 255
Etat = bon

Je voudrais par exemple traiter les informations, c'est à dire si je veux uniquement afficher la vitesse il faut bien que je puisse traiter mes données depuis une variable et non de 2 comme j'ai la.
Merci.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
17 juil. 2009 à 11:06
Le moins que l'on puisse dire c'est que tu n'es pas clair du tout...
strcat() permet de concaténer deux chaines de caractère
itoa() permet de convertir un entier en chaine de caractères.

Comme j'ai l'impression que ce n'est toujours pas ce que tu attends, pourrais tu nous donner un vrai exemple de ce que tu veux faire parce que la, je suis dans le flou.
A+
____________________________________________________________________________
Mon site internet : [htt://ImAnalyse.free.fr ImAnalyse] 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sbbichette Messages postés 14 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 11:34
ok, voila.
J'ai 2 prg appellons A et B.
A est ok, il tourne et envoit des info du style:

Voiture1 = rouge
Vitesse1 = 255
Etat = bon


B qui est sur une autre machine, reçoit les infos et les affiche:

Voiture1 = rouge
Vitesse1 = 255
Etat = bon

Jusque la pas de soucis.

Maintenant je voudrais sur B traiter les infos.
Imagine par exemple que je dois afficher un compteur de vitesse.
Il faut que j'isole : Vitesse1 = 255, du reste des info. Pour ensuite traiter le 255 pour mettre sur mon compteur.
Le soucis c'est que pour afficher mes infos voici le code que j'ai:

Print("%.*s", readbytes, data); 


Je ne sais pas à partir de la, comment recuperer mes infos et les traiter.
Car si j'affiche uniquement le readbytes j'ai rien qui s'affiche et si je fait pareil avec le data j'obtiens une serie de chiffre qui ne change pas.
De plus le format "%.*s" je ne le comprend pas.

Voila, j'espère avoir été le plus clair possible.

Merci.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
17 juil. 2009 à 12:52
Merci de ton explication.
Moi non plus je ne comprend pas le format Print("%.*s", readbytes, data);
Ce n'est pas une fonction standard. Normalement on met un %s pour afficher une chaine de caractères.
Quelle est le type des variables readbyte et data?
Peux tu nous mettre le code de la fonction Print() si tu l'as.
Merci


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
sbbichette Messages postés 14 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 14:29
int readbytes;
char data[1024];


Je n'ai pas plus de code pour le print, car ça affiche juste sur l'écran les infos.

Merci.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
17 juil. 2009 à 15:24
D'accord. Donc toutes les informations doivent être stoker dans data. Il faut donc que tu analyses cette chaine de caractère pour trouver les informations que tu souhaites.
Si par exemple, les informations sont toujours disposées dans le même ordre, il sera facile de parcourir ta chaine à la recherche d'un '=' et de convertir en int la chaine de caractère:
Pour le premier égal.

int Found =0;

char *P=data;
char Buffer[10],*Q=Buffer;
while(*P!=0){
  if(*P=='=')Found++;                //si on trouve un =
  if(Found==NumeroEgalATrouver)      //si on se situe sur le = que l'on cherche
    break;
P++;
}
P+=2;													//on saute l'espace
while(*P>='0' &&*P<='9'){       //Tant que c'est des chiffres
*Q=*P;P++;Q++;
}
*Q=0;
int Nb=atoi(Buffer);

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
sbbichette Messages postés 14 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 17:18
Merci pour ton code, mais ça ne marche pas.
Cela vient peut-etre de moi:

int Found =0; // ici tu initialise se que tu trouves

char *P=data; // tu transfer les données de data dans *P
char Buffer[10],*Q=Buffer; // ici ?
while(*P!=0){ // donc tu fais une boucle si il y a des données
  if(*P=='=')Found++;                //si on trouve un = on increment le found (le soucis c'est que tu compares l'ensemble des données à un égale)
  if(Found==NumeroEgalATrouver)      //si on se situe sur le = que l'on cherche (position 2)
    break; // on stop la boucle
P++; // on incremente le P (ça je ne comprends pas)
}
P+=2;//on saute l'espace (pour ce situer aprés le égale)
while(*P>='0' &&*P<='9'){       //Tant que c'est des chiffres (ici une nouvelle boucle pour repertorier les chiffres) le soucis c'est qu'il peut y avoir d'autre choses même des valeurs négative)
*Q=*P;P++;Q++; // ici je ne comprends pas
}
*Q=0; // je ne comprends pas non plus
int Nb=atoi(Buffer); // je ne comprends pas non plus atoi ?  et le buffer et vide


En tous cas merci beaucoup de ton aide et de ta patience. Mais si déjà tu arrives à me passer les infos dans une simple variable ça serais énorme.
@+
0
Rejoignez-nous