[ Foro de C ]

Ejercicio en C

11-Oct-2022 20:20
Rocio Del prado Cortés
0 Respuestas

Buenas tardes,

tengo el siguiente ejercicio del enunciado siguiente:

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
$>

No he conseguido resolver la parte de la función getenv.
Esto es lo que tengo hasta el momento:

#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;
}

¿Alguien me puede ayudar, por favor?




(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.)