/* Copyright maacera.com - http://www.maacera.com -
[email protected] */
/* Copyright Miguel Angel Acera */
/* Esta funcion invierte la cadena pasada en el primer parametro
y la deja invertida en la cadena pasada en el segundo parametro. */
void invertir_cadena(char *cadena_origen, char *cadena_destino)
{
char *palabra;
/* Tomamos la primera palabra de la cadena
pasada por parametro */
palabra = strtok(cadena_origen, " ");
/* Si no hemos llegado al final de la cadena
invertimos el orden de las palabras del resto
de la cadena (sin contar la palabra anterior) */
if (palabra!=NULL)
invertir_cadena(strchr(cadena_origen, ' '), cadena_destino);
/* Si quedan mas palabras añadimos la palabra
tomada antes en la cadena destino, si no,
inicializamos la cadena destino */
if (palabra!=NULL)
{
strcat(cadena_destino, palabra);
strcat(cadena_destino, " ");
}
else
{
strcpy(cadena_destino, " ");
}
}
Ejemplo:
/* Copyright maacera.com - http://www.maacera.com -
[email protected] */
/* Copyright Miguel Angel Acera */
#include <string.h>
#include <stdio.h>
#include <conio.h>
FORMACIÓN – PROGRAMACIÓN EN C / C++
© Copyright maacera.com - http://www.maacera.com -
[email protected]
2 / 2
/* Declaramos la funcion */
void invertir_cadena(char *cadena_origen, char *cadena_destino);
int main (void)
{
char cadena[50];
char resultado[50];
clrscr();
/* Pedimos una cadena. */
printf("Cadena: ");
gets(cadena);
/* La invertimos. La cadena invertida queda en la
cadena "resultado" */
invertir_cadena(cadena, resultado);
/* Mostramos la cadena "resultado", que contiene la
cadena invertida. */
printf("
Cadena invertida: %s", resultado);
}
/* Esta funcion invierte la cadena pasada en el primer parametro
y la deja invertida en la cadena pasada en el segundo parametro. */
void invertir_cadena(char *cadena_origen, char *cadena_destino)
{
char *palabra;
/* Tomamos la primera palabra de la cadena
pasada por parametro */
palabra = strtok(cadena_origen, " ");
/* Si no hemos llegado al final de la cadena
invertimos el orden de las palabras del resto
de la cadena (sin contar la palabra anterior) */
if (palabra!=NULL)
invertir_cadena(strchr(cadena_origen, ' '), cadena_destino);
/* Si quedan mas palabras añadimos la palabra
tomada antes en la cadena destino, si no,
inicializamos la cadena destino */
if (palabra!=NULL)
{
strcat(cadena_destino, palabra);
strcat(cadena_destino, " ");
}
else
{
strcpy(cadena_destino, " ");
}
}
*************************************************************************************************88
88
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
void main ()
{
char phrase[80];
int lpause,qant,i;
cout << " Entre une phrase 80 caracteres maximun : " << "
" ; cin.getline (phrase,80);
qant = strlen(phrase) ;
//for (i=qant;i>=0;i--)
//cout << phrase[i];
for (i=qant;i>=0;i--)
if (phrase[i]== ' ')
qant++;
cout << strrev (phrase);
cin >> lpause;
}
//int cant_letras,x;
//getline(cin,cadena);//Para que el usuario ingrese la cadena.
//cant_letras= cadena.length();//Cuenta cuántas letras hay en la cadena.
//printf("LAS INICIALES DE LA CADENA DE CARACTERES INTRODUCIDA SON:
");
//resultado=cadena[0];
//for(x=0;x<cant_letras;x++){
//if(cadena[x]==' '){
//resultado=resultado+cadena[x+1];
//cout << resultado;
***************************************************************************888
#include <cstdlib>
#include <iostream>
#include<conio.h>
#include<cstring>
#include <iostream>
using namespace std;
char * inverser (char * phrase)
{
char* rphrase;
int lon;
lon = strlen(phrase);
rphrase = new char[lon+1];
for(int i= 0; i < lon; i++)
rphrase[lon - i - 1] = phrase[i];
rphrase[lon] = ' ';
return rphrase;
}
void main ()
{
char phrase[80];
cout << " Entre une phrase 80 caracteres maximun : " << "
" ; cin.getline (phrase,80);
cout << inverser ();
cout<< "
";
cout<< "
";
system("PAUSE");
}
/* Función que devuelve la longitud de una cadena */
int StrLen(char * s)
{
char * s0= s;
while (*s++);
return s - s0 - 1;
}