Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
842 connectés 

  FORUM HardWare.fr
  Programmation
  C

  chaines de caractere... si simple !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

chaines de caractere... si simple !

n°1772249
catmanng
Posté le 11-08-2008 à 23:49:49  profilanswer
 

bonjour,
 
 
j'aurais aimé un petit coup de main...  
je dois joué sur les chaines de caractère en C... donc c'est pas gagné du tout!
 
je m'explique,j'ai code que voici  :
 
----------
 
     for(k = 0 ; k < 16 ; k++, j++)
     {
         if(data[j] < 127 && data[j] > 31)
            {
   
  //ici-lieu du code
   
----------
 
//ici-lieu du code, j'aurais aimé faire ca:
chaine=data[0]+data[2]+data[3];
printf(chaine);
 
j'ai essayé ca :
 
                fprintf(stdout, "%c", data[0]); //affiche le M
                fprintf(stdout, "%c", data[1]); //affiche le S
                fprintf(stdout, "%c", data[2]); //affiche le G
 
ceci m'affiche bien ce que je souhaite,  mais j'ai besoin de comparé ces chaines donc je bloques..
il me faudrait tout ça dans une variable pour faire des tests (contrairement à maintenant ou je fais qu'afficher un résultat).
 
C'est tout con, mais m***** !
 
Merci d'avance.
 
Newguy

mood
Publicité
Posté le 11-08-2008 à 23:49:49  profilanswer
 

n°1772250
Joel F
Real men use unique_ptr
Posté le 12-08-2008 à 00:02:40  profilanswer
 

une chaine de caractére, ca s'alloue avant de faire joujou : malloc et free
comparaison : strcmp
copie : strcpy

n°1772315
gilou
Modérateur
Modzilla
Posté le 12-08-2008 à 10:04:42  profilanswer
 

Dans son cas précis (3 caracteres a comparer avec trois autres), malloc/free semble un poil le fusil a éléphant pour chasser la grenouille. Un buffer de 4 caracteres semble suffisant.
Bon, apres, il faut plus de details sur l'algorithmique de son code pour juger de la strategie la plus efficace.  
A+,
 
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1772342
Joel F
Real men use unique_ptr
Posté le 12-08-2008 à 10:36:23  profilanswer
 

gilou a écrit :

Dans son cas précis (3 caracteres a comparer avec trois autres), malloc/free semble un poil le fusil a éléphant pour chasser la grenouille. Un buffer de 4 caracteres semble suffisant.
Bon, apres, il faut plus de details sur l'algorithmique de son code pour juger de la strategie la plus efficace.  
A+,


 
Certes pour malloc, reste qu'il faudrait plsu de détails :€

n°1772352
catmanng
Posté le 12-08-2008 à 10:49:38  profilanswer
 

Merci de réponses,
 
mais comment je peux faire ça :
//ici-lieu du code, j'aurais aimé faire ca:
chaine=data[0]+data[2]+data[3];
printf(chaine);

n°1772411
Joel F
Real men use unique_ptr
Posté le 12-08-2008 à 12:13:07  profilanswer
 

Code :
  1. char chaine[4];
  2. strncpy(chaine,data,3);
  3. chaine[3] = '\0';


 
En gros et de tête

n°1772421
Trap D
Posté le 12-08-2008 à 12:30:33  profilanswer
 

Tu veux chaine=data[0]+data[2]+data[3];  
TU fais
chaine[0] = data[0];
chaine[1] = data[2];
chaine[2] = data[3];
chaine[3] = 0;


Message édité par Trap D le 12-08-2008 à 12:30:54
n°1772425
Joel F
Real men use unique_ptr
Posté le 12-08-2008 à 12:33:27  profilanswer
 

je pense que c'est 0,1,2 vu son code initial. Doit y avoir une typo. Si c'est le cas, strncpy fait très bien l'affaire ;)

Message cité 1 fois
Message édité par Joel F le 12-08-2008 à 12:33:35
n°1772430
Trap D
Posté le 12-08-2008 à 12:44:37  profilanswer
 

Joel F a écrit :

je pense que c'est 0,1,2 vu son code initial. Doit y avoir une typo. Si c'est le cas, strncpy fait très bien l'affaire ;)


Ça m'apprendra à ne pas lire les topics en entier  :whistle:

n°1772646
catmanng
Posté le 12-08-2008 à 19:30:05  profilanswer
 

Merci pour vos réponses,
mais je n'arrive pas du tout à faire ce que je souhaite.
 
j'aimerais juste mettre la valeur afficher par => printf( "%c", data[0]);
dans une variable.
 
ce que je comprends  dans printf( "%c", data[0]);
c'est que cela affiche la chaine contenu dans data[0]
je peux pas simplement ( même très simplement) la mettre dans une variable?
 
 
PS : je suis obligé de faire du C....  
dans tous les autres langages on fait ça en 2 sec ! ....
 
 
C'est possible ou non?
 
 
 
 

mood
Publicité
Posté le 12-08-2008 à 19:30:05  profilanswer
 

n°1772647
catmanng
Posté le 12-08-2008 à 19:31:04  profilanswer
 

Merci d'avance,
 

n°1772664
catmanng
Posté le 12-08-2008 à 20:32:41  profilanswer
 

pas de réponse???
 
perso je testes encore et encore et j'avoue qu'un coup de main serait vraiement le bienvenu !
 
 
ce test ne fonctionne pas non plus,
 
if (printf( "%c", data[0])=="M" )
  {
      printf(" M victoire ! " ); //je voudrais passé dans cette condition
 }
 else
 {
     printf(" DTC! " );
 }
 
--------------------------------
si une idée vous vient ... je suis preneur !

n°1772666
Trap D
Posté le 12-08-2008 à 20:50:25  profilanswer
 

Il faut absolument que tu lises un bouquin de C.
 
printf est une fonction qui ecrit sur la sortie standart : stdout, la valeur de variables qui sont définis dans les arguements 2, 3, 4 ... de la fonction.
data est une chaîne de caractères. en C, celà signifie que  data est un tableau de caractères. Pour que la chaîne soit valide, il faut que l'un des caractères soit 0.  
Chauqe élément de data, data[0], data[1] ... est uncaractère, comme 'c', 'M' ...
Maintenant, analysons ce que tu as écrit, et tu vas voir que ça n'est pas du tout ce que tu crois :
if (printf(%c", data[0]) == "M" )      
printf est une fonction donc renvoie une valeur, la valeur est le nombre de caractères écrits, ici 1.
Donc 1 est comparé à l'adresse mémoire de la chaîne "M", en effet, à la compil, la chaîne "M" a été stockée en mémoire quelque part, donc quelque part il y a un 77 (code ASCII decimal de M) et puis un 0.
Autant-dire que la comparaison échoue !
Ce que tu veux sans doute faire c'est  

Code :
  1. if (data[0] == 'M')
  2. {
  3.     printf("M Victoire !" );
  4. }
  5. else
  6. {
  7.     printf("DTC !" );
  8. }


Citation :

'aimerais juste mettre la valeur afficher par => printf( "%c", data[0]);
dans une variable.
 

C'est très simple :

Code :
  1. char c = data[0];


Message édité par Trap D le 12-08-2008 à 20:53:10

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  chaines de caractere... si simple !

 

Sujets relatifs
Besoin d'aide pour programmation simpleQuestion simple de débutant
Insérer caractère % dans un texteDes soucis smarty pour intégrer mon menu sous cms made simple
Question simple sur DELETE, LIMIT et ORDER BYEnlever un caractère de la valeur d'une variable
Remplacement d'un caractère par un autre dans une chaineextraire nombres d'une chaine de caractère
[Javascript] Problème simple de syntaxe ![C] Manipulation de chaines dans un fichier
Plus de sujets relatifs à : chaines de caractere... si simple !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR