begin process at 2012 02 11 03:51:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

cherche une fonction pour manipuler une chaine de caractere


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

cherche une fonction pour manipuler une chaine de caractere

mardi 2 août 2005 à 23:15:05 | cherche une fonction pour manipuler une chaine de caractere

BertaNd

salut
je cherche une fonction qui me permettrait de prendre le premier caractere d'une chaine et de le deplacer a la fin de cette meme chaine,
exemple "cppfrance -> ppfrancec"

j'ai cherché sur msdn, mais bon ! j'ai deja du mal quand c'est en francais !

merci !
mardi 2 août 2005 à 23:36:01 | Re : cherche une fonction pour manipuler une chaine de caractere

BruNews

Administrateur CodeS-SourceS
char c;
len = strlen(psz);
a = psz[0];
strcpy(psz, psz+1);
psz[len - 1] = c;

ciao...
BruNews, MVP VC++
mardi 2 août 2005 à 23:49:25 | Re : cherche une fonction pour manipuler une chaine de caractere

meech

Membre Club
Salut,

BruNews a été vif... Ci-dessous néanmoins, une p'tite fonction et un programme appelant celle-ci, permettant de déplacer 0 à n caractères.

#include <stdio.h>
#include <string.h>

int deplace_caractere(char* str1, char* str2, int nbcar)
{
  char* ch;
  int i = 0, j = 0;

  if (!str1) return(1);
  if (!str2) return(2);
  if (nbcar > strlen(str1)) return(3);

  for (i = nbcar; str1[i] != 0; i++)
    str2[j++] = str1[i];
  for (i = 0; str1[i] != 0 && i < nbcar; i++) str2[j++] = str1[i];
  str2[j] = 0;
  return(0);
}

int main(int argc, char** argv)
{
  char str1[32], str2[32];

  strcpy(str1, "cppfrance");
  if (deplace_caractere(str1, (char*)&str2, 1) != 0)
     fprintf(stderr, "Erreur de déplacement de caractères\n");
  else
  {
    printf("str1 = %s\n", str1);
    printf("str2 = %s\n", str2);
  }
  return(0);
}


Compilation : gcc -o deplace_car.exe deplace_car.c

Possibilité d'optimiser.

Ciao.


mercredi 3 août 2005 à 00:04:13 | Re : cherche une fonction pour manipuler une chaine de caractere

BruNews

Administrateur CodeS-SourceS
3 parcours c'est beaucoup, j'avais mis en 2 mais on va réduire en 1 seul.
Pas testé mais devrait aller.

void DeplaceCar(char *psz)
{
  char *c, *d, a;
  c = psz;
  a = *c++; // ON RETIENT LE 1er CHAR
  if(!a) return; // CHAINE VIDE, C'EST FINI
  if(!*(c+1)) return; // 1 SEUL CHAR, C'EST FINI
  d = psz;
  while(*d = *c++) d++;
  *d = a;
}

ciao...
BruNews, MVP VC++
mercredi 3 août 2005 à 00:13:13 | Re : cherche une fonction pour manipuler une chaine de caractere

BruNews

Administrateur CodeS-SourceS
OUPS oubli que c est déjà incrémenté:

void DeplaceCar(char *psz)
{
  char *c, *d, a;
  c = psz;
  a = *c++; // ON RETIENT LE 1er CHAR
  if(!a) return; // CHAINE VIDE, C'EST FINI
  if(!*c) return; // 1 SEUL CHAR, C'EST FINI
  d = psz;
  while(*d = *c++) d++;
  *d = a;
}

ciao...
BruNews, MVP VC++
mercredi 3 août 2005 à 02:06:21 | Re : cherche une fonction pour manipuler une chaine de caractere

BertaNd

LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
   int iLengh, i, j;
   char szTitreWnd[128], szNewWindName[128];
      switch (msg)
      {
            case WM_TIMER:
                  GetWindowText(hwnd, szTitreWnd, 128);
                  iLengh = strlen(szTitreWnd);
                  for (i=1; i<=iLengh; i++)
                  {
                  j = i-1;
                  szNewWindName[j] = szTitreWnd[i];
                  }
                  szNewWindName[iLengh-1] = szTitreWnd[0];
                  SetWindowText(hwnd,szNewWindName);
                  break;
                 
            default:
                  return DefWindowProc(hwnd, msg, wParam, lParam);
                  break;
      }
      return 0;
}

Pourquoi faire compliqué quand on peut faire tout simple?
Merci de votre aide, mais j'aime pas rester sur un echec , alors j'ai concocté ca en m'inspirant de vos sources
C'est ce qu'il me fallait, mais bon, j'explique tres mal !
merci @+
mercredi 3 août 2005 à 08:56:54 | Re : cherche une fonction pour manipuler une chaine de caractere

xterminhate

Membre Club
Je peux te proposer une solution en C++ (en 1 seule ligne de code) se basant sur la fonction standard ROTATE (qui s'applique à n'importe quel conteneur standard, par exemple std::string).

string chaine = "bonjour!";
rotate(chaine.begin(),chaine.begin()+1,chaine.end());
// ici chaine vaut "onjour!b"

Voila un bout de code d'exemple :

#include<algorithm>
#include<iostream>
#include<string>

using namespace std;

int main()
{
    // test #1
    string chaine = "bonjour!";
    rotate(chaine.begin(),chaine.begin()+1,chaine.end());
    cout << chaine << endl;
    // test #2
    chaine = "!";
    rotate(chaine.begin(),chaine.begin()+1,chaine.end());
    cout << chaine << endl;
    // test #3
    chaine = "";
    rotate(chaine.begin(),chaine.begin()+1,chaine.end());
    cout << chaine << endl;
}

Cordialement,
Xterminhate.
mercredi 3 août 2005 à 10:12:28 | Re : cherche une fonction pour manipuler une chaine de caractere

BruNews

Administrateur CodeS-SourceS
mets
iLenght = GetWindowText(...); // qui donne direct la strlen, tu gagnes 1 parcours
et
szNewWindName[iLengh-1] = szTitreWnd[0];
en sortie de boucle risque de faire planter si iLenght == 0.

donc:
if(2 > (iLenght = GetWindowText(...)) break; // NE RIEN FAIRE

ciao...
BruNews, MVP VC++
mercredi 3 août 2005 à 10:20:00 | Re : cherche une fonction pour manipuler une chaine de caractere

magic_Nono

Membre Club
ben vi c'est un ROL,
mais c'est sur qu'on parle de chaine ici, ASCII ou UNICODE....

selon l'environnement ou les choix....

Bien vu pour la stl....

Sinon, un nouveau bravo pour BN notre optimiseur nationnal !
a par a faire de l'assmb, je vois pas trop quelle soluce propre serait moins couteuse

a moins peut etre de pouvoir faire comme l'algo si dessous

mémoriser la pos de start
si possible, ALLOUER un car de plus (a la fin)
copier le premier car et le car de fin de chaine
Desallouer le 1er car
retourner la nvelle chaine


et on a gagné la copie de la partie centrale...


ça en assmb ressemblera a un rouleau compresseur (pour les connaisseurs)
les protections mem en plus.

___________________________________________________________
Magicalement
Nono
mercredi 3 août 2005 à 14:39:37 | Re : cherche une fonction pour manipuler une chaine de caractere

magic_Nono

Membre Club
C possible alors ce que j'ai dit plus haut?

1 2

Cette discussion est classée dans : fonction, cherche, chaine, caractere, manipuler


Répondre à ce message

Sujets en rapport avec ce message

Rechercher une chaine de caractere [ par Johjo ] Il n'y aurait pas une fonction qui me permette de retrouver une chaine de caractere dans une autreparce moi, je trouve rien du tout :(Si quelqu'un pou chaines de caracteres: caractere NULL [ par dletozeun ] bonjour,Je sais que lorsque l'on utilise la fonction: sprintf(), celle ci met automatiquement un caractere NULL a la fin du mot ecris dans la chaine.J Fonction decouper une chaine de caractere [ par 2koa ] Bonjour, je dois ecrire une fonction qui decoupe une chaine de caracteres en mots. La fonction renvoie un tableau, où chaque case contient l'adresse cherche volontaire [ par greg38bj ] bonjour,j'ai un fichier en pseudo C qui m'a été fourni par ida pro lors de la décomposition d'un soft.Dans ce fichier (auquel je ne comprends rien), i concaténuation de chaine [ par romainbisson ] je voudrais mettre au bout d'une chaine de caractere (ligne) un caractere (caractere) donc j'utilise strcat mais il me donne les erreurs suivantes :Mo Langage C [ par polocouturier87 ] Bonjour a tous je débute en C. J'aimerai avoir un code permettant de remplacer toute les occurence d'une chaine de caractere 1 par la chaine 2 dans u crypter Password chaine caractere -- DEBUTANT [ par bisnn ] Bonjour, surement déjà dit et vu mais je ne m'en sort pas, je débutes en C... [^^ange] J'ai besoin dans un programme qui automatise certaines tâches Threads, fonction et mutex ? [ par Adict ] bonjour à tout le monde [^^happy13] dans mon projet de créer un tchat il faut que j'applique sur le client un thread qui exécute une autre fonction q compter les caractere dans un fichier (espaces inclus) [ par Pitdeboole ] salut à tous je fais mes premiers pas dans le domaine de la programmation j'ai un probleme que j'arrive pas a resoudre: lire un texte au clavier l'enr Cherche comment remplacer un caractere dans une variable en c++ [ par jere845 ] Bonjour, je cherche a modifier un caractere dans une variable, je m'explique si la variable est l-ol-, je voudrais remplacer tout les - par tiret par


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 3,026 sec (3)

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