[ Foro de C ]

Ayuda para resolver el siguiente ejercicio

11-Oct-2022 20:11
Invitado (Angela)
0 Respuestas

Buenas tardes,

tengo el siguiente ejercicio en C, hasta ahora he conseguido imprimir las palabras al revés y sacarlas en mayúsculas, pero la parte de variables de entorno no la he conseguido.

Escribe un programa reversevars.c en C para linux que recibe como argumentos un número indeterminado de variables de entorno.

El programa debe escribir por su salida una única cadena con el contenido de todas las variables especificadas concatenado, con las palabras invertidas y todos los caracteres en mayúsculas.

Si una variable no está definida, se tratará como si fuera la cadena vacía.

Puede suponer que la cadena a imprimir por la salida no tendrá más de 1024 caracteres.

Para conseguir desde el programa C el valor de una variable de entorno debe usar la función getenv(3). Para conseguir la longitud de una string, se debe usar la función strlen(3).

Por ejemplo:

$> export x=hola
$> export y=pez
$> export z=manolo
$> ./reversevars y x z
ZEPALOHOLONAM
$> unset x
$> ./reversevars y x z
ZEPOLONAM
$> ./reversevars y z
ZEPOLONAM
$> ./reversevars y
ZEP
$> ./reversevars
$>


Mi solución es la siguiente:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char cadena[1024];
   int i = 0;
   int j;
   printf("Introduce una cadena de texto: \n");
   gets(cadena);
   printf("\nLa cadena introducida es: %s\n\n", cadena);
   while(cadena[i]!='\0'){
       i++;
   }
   printf("La cadena al rev\x82s es:\n\t");
   for (j=strlen(cadena)-1; j>=0; j--){
       printf("%c", toupper(cadena[j]));
   }
   puts("");
   return 0;
}


¿Pueden ayudarme a solucionarlo de forma correcta, por favor?

Gracias de antemano




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)