Récuperer caractere par caractere dans une chaine de caractere [Résolu]

Signaler
Messages postés
3
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
6 avril 2010
-
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Bonjour Tt le monde,
j'ai besoin d'un pg en C qui lit de l'inverse une chaine de caractere
exe ma chaine est : " ProgrammeTest "
j'ai besoin de recuperer la derniere lettre "t"
et la placé en 1er ..

Si vous avez des idées, je vous remercie infiniment .

3 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
Ceci devrait fonctionner pour intervertir le premier et le dernier caractère :
char str[14]; size_t strL;
char tmp;

strcpy(str,"ProgrammeTest");
strL = strlen(str);

tmp = str[0];
str[0] = str[strL];
str[strL] = tmp;

printf("%s\n",str);

---
VB.NET is good ... VB6 is better
Messages postés
3
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
6 avril 2010

Bonjour ghuysmans99,
Merci de m'avoir répondu si vite que ca
mais le pg que je cherche necessite une utilisation de boucle while + les pointeur sans utilisé les fonctions exe : "strcpy "

voici le debut du pg

printf("donner la chaine")
gets(chaine)
taille= strlen(chaine)
p=chaine+taille -1

while(p<chaine) // p = pointeur
while((*p != '') || (p==chaine))
p--;
if(*p == '')|| (p==chaine)

je cherche la suite du pg, si vous avez une idée , Merci d'avance .
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
14
strcpy() ne sert qu'à copier la chaine dans le buffer qui est en lecture/écriture. Si j'avais fait char* buffer = "ProgrammeTest"; et que j'avais écrit dedans, j'aurais eu droit à une Segmentation fault . Fais plutôt comme ça :
#include <stdio.h>
#include <windows.h>

size_t my_strlen(char* str)
{
//TODO: implémenter cette fonction.
return strlen(str);
}

char* my_strrev(char* str)
{
char *s  str; size_t s_len my_strlen(s);
char *s2 str+s_len-1, *sEnd str+s_len/2;
char tmp;
while (s2>=sEnd)
{
tmp *s; *s *s2; *s2 = tmp;
s++; s2--;
}
return str;
}

int main(int argc, char* argv[])
{
char buffer[255];
printf("Inverseur de chaines\n---------------------\n\nEntrez la chaine : ");
gets(buffer);
my_strrev(buffer);
printf("Son inverse est  : %s\n\n",buffer);

system("pause");
return 0;
}

Ca donne ceci : http://img408.imageshack.us/img408/3811/inverseurchaines.jpg
---
VB.NET is good ... VB6 is better