Fonction inversion sens des mots
Bonsoir
Je sollicite de l'aide sur une fonction inversion de sens des mots
Je voudrais que ma fonction fonctionne de la manière suivante
entrée => la voiture est verte
sortie => verte est voiture la
Or, je ne récupère que le premier mot "verte"
Merci pour votre aide !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#define MAXLINE 512
int n;
int i=0;
char line[MAXLINE];
int word=0;
int lengthText=0;
int length=0;
char line2[MAXLINE];
lengthText = strlen(line);
length = lengthText;
while(length > 0)
{
while((line[lengthText]!=' ') && (lengthText!=0))
{
lengthText--;
}
if(lengthText==0)
{
word = lengthText;
}else{
word = lengthText + 1;
}
while(word != length)
{
line2[i] = line[word];
word++;
i++;
}
line2[i] = ' ';
i++;
length = length - (word - lengthText);
lengthText--;
}
fputs(line2,stdout); |
Inversion d'un chaine de caractere
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
/*pas de certitude (car pb avec ma machine actuelle , le code n'est pas testé)si ca marche juste pour te donner quelques idées*/
/*contient les fonctions printf, scanf etc...*/
#include <stdio.h>
/*contient les fonctions strlen,strcat,strcmp,etc...*/
#include <string.h>
/*appel de malloc, callloc*/
#include <stdlib.h>
/*arret du programme*/
#define EXIT_STATUS 0
/*fonction principale*/
int main()
{
/*initialisation des chaines et du compteur*/
char *chaine1, *chaine2 ="";
int loop = 0;
/*affichage de la chaine de caractères*/
printf("Entrer votre chaine:\n");
/* lecture de la chaine*/
scanf("%s",chaine1);
/*allocation a chaine1 la taille sizeof(char)*/
chaine1 = (char*)malloc(sizeof(char));
/*on entre dans la boucle */
while( loop < strlen(chaine1))
{
/*on concatène la chaine2 avec chaque caractère de chaine1 dans l'ordre decroissant*/
chaine2 = strcat(chaine[strlen(chaine1)-loop], chaine2);
loop++;
}
/*affichage de la chaine inversée*/
printf("Le resultat est: %s",chaine2);
/*on libere l'espace alloué */
free(chaine1);
return(EXIT_STATUS);
} |