begin process at 2012 05 28 15:19:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

les chaines de caractères dans C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

les chaines de caractères dans C

lundi 30 mai 2005 à 15:17:45 | les chaines de caractères dans C

hzocm

Bonjour,

Je voudrais copier un fragment de la chaine A, comment faire??
ex: A = hello, je suis une chaine
je veux copier de la position 3 à 5 --> j'aurai donc: "lo,"

******

 
lundi 30 mai 2005 à 15:30:05 | Re : les chaines de caractères dans C

vecchio56

Administrateur CodeS-SourceS
char chaine[] = "hello"; chaine de base
pour copier de la position i à la position j dans une chaine c:
strncpy(c, chaine + i, j - i);
par exemple chaine+3 pointe vers la chaine "lo"

lundi 30 mai 2005 à 15:32:43 | Re : les chaines de caractères dans C

abdoulax

Ce que tu pe faire, c' un truc du genre :

int a,b;
char chaineB[strlen(chaineA)];
for (a=3, b=5; a < b;a++) chaineB[strlen(chaineB)+1] = chaineA[a];
chaineB[strlen(chaineB)+1] = '\0';

Du moins c un truc de ce genre. Après j si ça se trouve y a déjà une fonction qui est faite expret ^^

Have Fun ...

lundi 30 mai 2005 à 15:39:16 | Re : les chaines de caractères dans C

vecchio56

Administrateur CodeS-SourceS
char chaineB[strlen(chaineA)];
Tu ne peux pas faire ca, quand tu crée un tableau comme ca (local), tu dois donner une constante pour spécifier la taille. C'est vrai que gcc laisse passer ca mais sous vs ca n'ira pas

lundi 30 mai 2005 à 15:51:37 | Re : les chaines de caractères dans C

hzocm

j'ai fait ça:

char* lireRaison(char* anEvent){
  char* tmp;
  char a[1024];
  char b[1024];
  int n;

  tmp = (char*) malloc (128);
 
  strcpy(a,strstr(anEvent,"GTT_")); // la 1ere caractère
  strcpy(b,strstr(a,"\n")); // la après-dernière caractère
  n = strlen(a) - strlen(b);
 
  strncpy(tmp,a,n);
  printf("tmp =%s\n",tmp);
  return tmp;     
}

Le problème: Il ajoute par fois, quelques choses à la fin de tmp!!!!!!  Je ne comprend pas.  C'est peut être un problème d'adresse??
 
lundi 30 mai 2005 à 16:13:47 | Re : les chaines de caractères dans C

hzocm



 Je fait ça et il donne le bon résultat:

char* lireRaison(char* anEvent){
  char* tmp;
  char a[1024];
  char b[1024];
  int n;
  int i;

  tmp = (char*) malloc(256);
  strcpy(a,strstr(anEvent,"GTT_")); // 1ere position
  strcpy(b,strstr(a,"\n"));// après dernière position
  n = strlen(a) - strlen(b);

  strncpy(tmp,a,n);
  strcat(tmp,"\0");
  strcat(tmp,"\0"); //*

  printf("tmp =%s\n",tmp);
  return tmp;     
}

Par contre, je comprend pas du tout, pourquoi quand je ne mets pas la lgine (*), il ajoute des fois des caractères à la fin de ma variable!!!!!
lundi 30 mai 2005 à 16:24:21 | Re : les chaines de caractères dans C

vecchio56

Administrateur CodeS-SourceS
Il me semble que strcnpy ajoute automatiquement un zero terminal, mais c'est à vérifier. Vu ton résultat, on dirati que ce n'est pas le cas. Tu peux alors faire:
...
strncpy(tmp,a,n);
*(tmp + n + 1) = 0;
...

lundi 30 mai 2005 à 16:42:45 | Re : les chaines de caractères dans C

hzocm



 enfait, le premier code ne marche pas, il donne des mêmes erreurs lorsqu'on le met dans un autre prog. (Je comprend trictement rien)
ceci marche:

char* lireRaison(char* anEvent){
  char* tmp;
  char a[1024];
  char b[1024];
  int n;

  tmp = (char*) malloc(256);
  strcpy(a,strstr(anEvent,"GTT_"));
  strcpy(b,strstr(a,"\n"));
  n = strlen(a) - strlen(b);

  strncpy(tmp,a,n);
  *(tmp+n) = 0;
  return tmp;     
}


Conclusion: j'aime pas C, java est bc mieux :((


Cette discussion est classée dans : chaine, chaines, caractères, copier


Répondre à ce message

Sujets en rapport avec ce message

Diviser une chaine de caractères en 3 chaines de caractères [ par rico77200 ] A la base je dipose d'un fichier .txt dont le contenu est :apprenti1;ti1;te1apprenti2;ti2;te2apprenti3;ti3;te5apprenti4;ti4;te4apprenti5;ti5;te5Je sou Chaines de caractères C++ [ par Scalpweb ] Bonjour à tous. Je suis un programmeur VB qui essaye d'apprendre le C++. En VB, je connais de nombreuses instrcutions pour gérer les chaines de caract remplir un tableau avec des chaines de caractères (C) [ par djibfr ] Bonjour à tous! Alors voila, j'ai un petit problème tout bête mais je n'arrive pas à la résoudre et mes recheches ne m'ont pas trop éclairé. Je souhai Chaines de caractères [ par Roro8883 ] Salut,je suis complètement perdu et embrouillé dans les chaînes de caractères en C++ !!!!Comment est-ce que je peux faire pour savoir, dans une chaine analyse syntaxique [ par fadiam ] Bonjour à tous. je cherche à réaliser une fonction qui modifie une chaine de caractères.elle n'accepte que les "chiffres" de 0 à 9 et quelques autres comment traiter une chaine de caractères séparée par espaces (String) [ par baptchr55 ] Bonjour à tous, j'ai un nouveau problème. Je récupère une chaine de caractères dans un "[i]string[/i]", et je souhaiterais extraire ceux-ci mot par m suppression caractère [ par fadiam ] bonsoir. une fonction lisant une chaine de caractères n'accepte que les caractères entre '0' et '9' (chiffres) et les ',' '-' '.' et ' '. Si il y a d Enlever les caractères non affichables d'un chaine de caractères [ par mmaximum ] Bonjour à tous,Je cherche un moyen d'enlever tous les caractères spéciaux d'un chaines ( accents,signes spéciaux) pour les remplacer par la lettre san extraction des sous-chaine des caractères séparées par des virgules [ par OTHKREEN ] bonjour à tous,j'ai un problème avec les chaines de caractères en C++.j'ai ecrit quelques instructions pour demander à un utilisateur d'entrer une cha comment recherecher un mot dans une chaine de caractères ?? [ par yosboss ] Salut à tous,je sollicite votre aide pour rechercher un mot dans un ensemble de chaine de caractère contenu dans un ficher !


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,279 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales