Récuperer caractere par caractere dans une chaine de caractere

Résolu
atafoukte Messages postés 3 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 6 avril 2010 - 5 avril 2010 à 16:52
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 6 avril 2010 à 11:29
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

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
6 avril 2010 à 00:11
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
3
atafoukte Messages postés 3 Date d'inscription lundi 16 novembre 2009 Statut Membre Dernière intervention 6 avril 2010
6 avril 2010 à 01:13
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 .
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
6 avril 2010 à 11:29
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
0
Rejoignez-nous