Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Cadena de caracteres (string)

18/27
Recursos

Generalmente se dice que es un arreglo de caracteres cuando lo que se almacenó son caracteres y no existe el carácter nulo al final.

Cuando el arreglo de caracteres termina con el carácter nulo se llama cadena de caracteres.

Aportes 365

Preguntas 11

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

A mi me tomo un dia, pero lo hice sola, que emoción!!

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

int main()
{
    printf("Cadena de Caracteres \n");

    char Cadena[50];
    int size;

    printf("Ingresa una cadena de caracteres \n");
    gets(Cadena);

  //  printf("La Cadena es: \n");
    //puts(Cadena);
    size = strlen(Cadena);
   // printf("La longitud de la cadena es: %i \n", size);

    printf("La cadena al revez es: \n");
     for(int i = size; i>=0; i--){

        printf(" %c ", Cadena[i]);
     }
       


    return 0;
}

Para recoger información del stdin del usuario podemos usar scanf(), gets() y fgets().
.
el problema de scanf() es que solo recoge información hasta que encuentra un espacio.
.
el problema de gets() es que si por ejemplo la información recogida tiene un tamaño 15 espacios en memoria y se guarda por ejemplo en un array de 5 espacios los 10 espacios restante los escribe en la memoria de igual manera y con esto podría reescribir una función importante del sistema haciendo colgar la computadora, para evitar eso se recomiendo usar:
.
fgets() ya que en esta función se le pasa como parámetro la variable donde se va a guardar la información, de donde se va a recibir la información y lo que corrige el problema de la anterior función que es el tamaño máximo de la información que puede recibir, quedando así: fgets(varaible, 15, stdin); donde “variable” es la variable donde se va a guardar la información, 15 es el tamaño máximo de la información que puede recoger y stdin es de donde se va recoger la información en este caso stdin es el teclado

RETO

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

int main(){
    //declared var array
    char chain[50];
    int ziseChar;
    printf("escriba cadena\t");
    gets(chain);//obtiene todo lo digitado por el teclado hasta presionar enter
    ziseChar = strlen(chain);
    printf("\n********************************");
    printf("\nCadena digitada es:\t");
    puts(chain);//muestra todos los carecteres contenidos en la variable chain
    printf("La cadena Invertida es:");
    for(int i=ziseChar;i>=0;i--){
        printf("%c",chain[i]);
    }

    printf("\nlongitud de la Cadena digitada es: %i\n",ziseChar);

}


👾 Invertir una cadena de caracteres en Dart.

import 'dart:io';

void main(List<String> arguments){
  String chain;
  var  reverse = '';

  print('Ingrese cadena de caracteres: ');
  chain = stdin.readLineSync().toString();

  for(var i = 0; i < chain.length ; i++){
    print(chain[i]);
    reverse += chain[chain.length - (i+1)];
  }

  print('La cadena invertida es: $reverse');
}

Hey, tuve ciertos problemas con el buffer de la terminal de la linea de comandos y además en C11 (estandar) removieron la funcion gets(); de la libreria <stdio.h>.
Por ultimo hay que agregar la libreria #include <string.h> para poder usar la función strlen();

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

int main(int argc, char const *argv[])
{
    char nameFull[50];
    int size = 0;
    printf("Programa cambio de orden de caracteres \n\n");
    printf("Por favor escriba su primer y segundo nombre, esto si tiene segundo nombre\n");
    if (fgets(nameFull, sizeof nameFull, stdin) != NULL)
    {
        printf("Este es el nombre escrito: \t");
        puts(nameFull);
        printf("\n");

        size = strlen(nameFull);
        char reverNam[size];
        for (int i = 0; i < size; i++)
        {
            reverNam[i] = nameFull[(size - 1) - i];
        }
        printf("Este es su nombre al reves: \t");
        puts(reverNam);
    }    
    return 0;
}

Apuntes de clase
En lenguajes de programacion como C++ o C# un string es una cadena de caracteres.
Un string en esencia es un arreglo de caracteres.
Por lo tanto hay que tener en cuenta que en los lenguajes mas modernos ya no vamos a tener la necesidad de usar “cadenas de carácteres en su lugar usaremos string
_
gets en C, es la funcion que nos permite leer una cadena de caracteres incluyendo espacios.

Mi solucion al reto:

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

int main()
{
    char string [50];
    int size;

    printf("Escribe tu nombre y te lo mostrare de forma invertida\n\n");
    gets(string);
    size = strlen(string);

    printf("\nTu nombre invertido es:\n");
    for(int i = size-1; i >= 0; i--) {
        printf("%c",string[i]);
    }

    return 0;
}

int main()
{
    printf("Escribe tu nombre y podras leerlo al reves!\n");

    char name[50];
    int size1;
    int cambio;
    int lastPosition;
    printf("Ingresar el nombre: \n");
    gets(name);
    size1 = strlen(name);
    lastPosition = size1-1;

    for(int i=0;i<size1/2;i++)
    {
        cambio = name[i];
        name[i] = name[lastPosition-i];
        name[lastPosition-i] = cambio;
    }
    printf("\n El nombre al contrario es: ");
    puts(name);
    return 0;
}```

Tuve el mismo problema de la función strlen() por si a alguien le sirve (lo vi en otro comentario) solo hay que añadir la librería:

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

int main()
{
    printf("Clase 18 Reto\n");
    char nameC[50];
    int tam;

    printf("Ingrese la cadena de caracteres: \n");
    gets(nameC);

    tam =strlen(nameC);

    printf("La palabra escrita al reves es: \n")

    for(int i=tam; i>=0; i--)
    {
        printf("%c", nameC[i]);
    }
    return 0;
}```

Reto terminado. 😄

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

int main()
{
    printf("Reto Cadena de Caracteres: Invertir la frase\n\n");

    char frase[100];
    int size;
    int position;

    printf("\nIngresar frase: ");
    gets(frase);

    size = strlen(frase);
    position = size;
    puts(frase);
    printf("\nTamaño: %i", size);

    printf("\nLa frase al reves es: ");

    for(int i = size; i >= 0; i--)
    {
       printf("%c", frase[i]);
    }

    return 0;
}

Aqui dejo mi solucion. Reto cumplido 😉

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

int main()
{
    printf("Ingresa una cadena de caracteres y la vamos a invertir! \n");

    char nameV[60];
    char invertida[60];
    int size;

    printf("Dame tu nombre: ");
    gets(nameV);

    size = strlen(nameV);

    printf("Tu cadena invertida queda asi: ");
    while(size)
    {
        size--;
        printf("%c", nameV[size]);
    }

    return 0;
}
int main()
{
    char letra[50];
    printf("Escribe una letra: ");
    gets(letra);
    int size = strlen(letra);
    for(int i=size; i>=0; i--)
    {
        printf("%c", letra[i]);
    }
}```

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

int main()
{
char cadena[50];
int size;

printf("Ingresa cadena de caracteres: \n");
gets(cadena);
size = strlen(cadena);

printf("La cadena ingresada en orden inverso es: \n");
for(int i=size; i>=0; i--)
{
    printf("%c",cadena[i]);

}

return 0;

}

La funcion puts() solo funciona con variables que consiguen input de gets()?

Se podría hacer más rápido si usaba la librería y la función, pero así se practica mejor la lógica y algoritmia 😃

/*
Haz un programa que reciba una cadena de caracteres e imprime de regreso la
misma cadena de forma invertida
*/

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

int main()
{
    printf("Hello world!\n");

    char str[50];

    int len;

    printf("Ingresa el string que quieres invertir\n");
    gets(str);

    printf("El string es: ");
    puts(str);

    len = strlen(str);

    printf("Tu palabra invertida es: ");

    for(int i = len; i >= 0; i--){
        printf("%c", str[i]);
    }

    return 0;
}

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

int main()
{
    char testChar[30];

    printf("Enter a string with gets: \n" );
    gets(testChar);

    for (int i=0; i<30; i++)
    {
        printf("%c", testChar[30-i]);
    }

    return 0;
}

Reto


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

/*
    RETO
    * Haz un programa que reciba
      una cadena de caracteres e
      imprima de regreso la misma 
      cadena de forma invertida.
*/

int main(int argc, char const *argv[])
{
    char string[50];
    printf("\nIngrese la cadena: ");
    gets(string);

    for (int i = strlen(string) - 1; i >= 0; i--) {
        printf("%c", string[i]);
    }
    printf("\n\n");

    return 0;
}

RETO:


codigo: no hay
no me sirvió el STRLEN, eso me pasa por tener el programa pirata xd

Aqui esta mi reto

RETO INVERTIR CADENA

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

int main()
{
    printf("Vamos a invertir una cadena :) !\n");

    char cadena[50];

    int size;

    printf("Ingresa una cadena: ");
    gets(cadena);

    printf("La cadena es: ");
    puts(cadena);

    size = strlen(cadena);

    for (int i = size; i>=0; i--)
    {
        printf("%c \n", cadena[i]);
    }



    return 0;
}

Reto cumplido.

Reto completado 😃

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

int main()
{
    char string[100];
    int size;

    printf("REVERSE STRING\n");
    printf(">>ENTER A TEXT STRING: ");
    gets(string);
    size = strlen(string);

    printf("\n>>REVERSE STRING ENTERED:");
    for(int i=size; i>=0; i--){
        printf("%C", string[i]);
    }

    printf("\n");
    system("pause");

    return 0;
}

Mi reto

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

int main()
{
    printf("Cadena de Caracteres invertida :) \n");

    char cadena[50];
    int size;

    printf("Ingresa tu nombre \n");
    gets(cadena);

    size = strlen(cadena);

    printf("Tu nombre  al reves es: \n");
     for(int i = size; i>=0; i--){

        printf(" %c ", cadena[i]);
     }
       

    printf("INGRESA UN NUMERO PARA FINALIZAR");
    scanf(" %i", &size);

    return 0;
}

Reto 14

Code

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

int main()
{
printf(“\n");
printf("Strings
\n");
printf("
***\n\n\n”);

int size, i;
char nameC[100];

printf("\nInput the word: ");
gets(nameC);

printf("\nWord inputted: ");
puts(nameC);

size = strlen(nameC);


printf("\nWord inverted: ");
for(i = size; i >=0; i--){
    printf("%c ", nameC[i]);
}
getch();
return 0;

}

Result

Codigo perfectamente optimizado para lo pedido 😃

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

int main()
{
    char name[50];
    printf("Ingresa tu nombre:\n");
    gets(name);
    int size = strlen(name);
    char newname[size];
    printf("Tu nombre al reves es:");

    for (int i = size; i>=0; i--)
    {
        for (int j = 0; j < size; j++)
        {
            newname[j] = name[i];
            printf("%c", newname[j]);
            break;
        }

    }

Aqui mi aporte

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

int main()
{
    char nombre[50];
    int size;

    printf("Igresa tu nombre - ");

    gets(nombre);


    printf("Tu nombre es: ");
    puts(nombre);

    size = strlen(nombre);

    printf("El resultado es:");
    for(int i = size; i > -1Alex; i--){
        printf(" %c", nombre[i]);
    }

    return 0;
}


reto

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

int main()
{
printf("cadena de caracteres \n");
    char nameChar [50];
    int size;

    printf("Escribe tu nombre \n");
    gets (nameChar);

    size = strlen(nameChar);
    printf("El nombre invertido es:");

    for (int i = size; i >= 0; i--)
    {
    printf("%c", nameChar[i]);
    }
    return 0;
}

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

int main()
{
    printf("invertir texto\n");

    char nameC[50];
    int size;

    printf("\nIngresar un apalabra : \n");
    gets(nameC);
    size = strlen(nameC); //la funcion strlen es la que permite contar al revez en el ciclo for

    printf("\nLa cadena al ravez es: \n");
    for (int i = size; i>=0; i--)
    {
        printf("%c", nameC[i]);
    }

    return 0;
}

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

void main()
{
    printf("Cadena de caracteres invertida\n");
    char string[50];
    
    printf("Ingresar la cadena de texto: \n");

    gets(string);
    int size_string = strlen(string);

    printf("El primer string es: ");
    puts(string);

    printf("El string invertido es: ");
    for (int i = size_string - 1; i >= 0; i--)
    {
        printf("%c", string[i]);        
    }
    printf("\n");
}

RETO

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

int main()
{
    printf("Reto 1. Cadena de caracteres\n\n");

    char nameUno[50];
    int size;

    printf("Ingrese su cadena de caracteres: \n");
    gets(nameUno);

    printf("\n La cadena de texto es: ");
    puts (nameUno);

    size = strlen(nameUno);

    printf("\n La cadena al reves es: \n");
    int i;
    for(i = size; i >=0; i--)
    {
        printf("%c", nameUno[i]);
    }

    printf("\n");

    return 0;
}

En el reto, a la hora de ejecutarlo, no me invierte el nombre cuando meto ana, natan, jaja 😆.

Comparto el código de mi solución al reto:

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

int main(){

    /*
    Reto: Haz un programa que reciba una cadena de caracteres e imprima de regreso el mismo string
    pero con las letras en orden inverso.
    */

    printf("Cadena de caracteres \n");

    char name[50];
    int size;

    printf("Ingresar el cadena de caracteres: \n");
    gets(name);

    for(int i = 0; i < strlen(name); i++){
        printf("%c", name[strlen(name) - 1 - i]);
    }

    return 0;
}

Reto:

Me incluye unos caracteres raros al final del arreglo invertido, ojalá la profe pusiera soluciones a los retos para evr cómo lo resuelve.

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

int main(){

    char stringC[20];
    char arrInvert[20];
    int size;
    int indice = 0;

    printf("Ingresar la cadena a procesar: ");

    gets(stringC);
    size = strlen(stringC);

    for( int j=size-1 ; j>=0 ; j-- ){
        arrInvert[indice] = stringC[j];
        indice++;
    }

    printf("La cadena invertida es: ");
    puts(arrInvert);

    return 0;
}

Con un for descendente es muy fácil

#include<stdio.h>
#include<string.h>

int main()
{
    printf("Invertir la frase.\n\n");
    char frase[30];
    printf("Ingresa una frase: \n\n");
    gets(frase);
   for (int i=strlen(frase); i>=0; i--)
    printf("%c", frase[i]);
    return 0;
}

Mi reto:

int main()
{
    char myArray[40];
    int j=0;
    char myChar[50];

    printf("Ingresa tu nombre:");
    gets(myArray);

    printf("Tu nombre es:");
    puts(myArray);

    int cant=strlen(myArray)-1;

    printf("El tamañno es: %i \n",cant);

    for(int i=cant;i>=0;i--){
        myChar[j]=myArray[i];
        j++;
    }
    printf("La cadena al revez es:");
    puts(myChar);
    return 0;
}

Mi solución al reto:

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

int main()
{
    printf("--------------------------");
    printf("\n    INVERTIR CADENA");
    printf("\n--------------------------");

    char cadena[40];

    printf("\nIntroduce una cadena: ");
    gets(cadena);
    printf("\n");

    int longitud = strlen(cadena);

    for (int i = longitud - 1; i >= 0; i--) {
        printf("%c", cadena[i]);
    }

    printf("\n");

    return 0;
}

 1 #include <stdio.h>
  2 #include <string.h>
  3
  4 int main() {
  5     int size;
  6     char nameC[50];
  7
  8     printf("Ingresar el nombre con gets: \n");
  9
 10     if(fgets(nameC, sizeof nameC, stdin))
 11         nameC[strcspn(nameC, "\n")] = '\0';
 12
 13     printf("El nombre es: ");
 14     puts(nameC);
 15
 16     size = strlen(nameC);
 17
 18     printf("\n El tamaño de la cadena es: %i", size);
 19     printf("\n");
 20
 21     printf("Cadena invertida\n");
 22
 23     for (int i = size; i >=0 ; i--)
 24         printf("%c", nameC[i]);
 25
 26     printf("\n");
 27
 28     return 0;
 29
 30 }

Con la función strrev podemos obtener la cadena invertida:

#include<stdio.h>
#include<string.h>

int main()
{
    printf("Cadena de Caracteres.\n\n");

    char nombre[50];
    printf("Leer nombre con gets: ");
    //gets: permite leer una cadena incluyendo espacios y termina cuando lee el fin de linea: \n
    gets(nombre);

    printf("El nombre es: ");
    //puts: Imprime la cadena hasta que detecta el fin de linea \0 o \n.
    puts(strrev(nombre));

    return 0;
}

Hola, comparto la solución del reto:

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

/*
  Primer Reto:
  . Haz un programa que reciba
    una cadena de caracteres e
    imprima de regreso la misma
    cadena de forma invertida.
*/

int main()
{
    setlocale(LC_ALL, "");

    char expression[50];
    int size;

    printf("Ingrese la expresión: ");
    gets(expression);

    printf("La expresión es ");
    puts(expression);

    size = strlen(expression);

    printf("La expresión invertida es: ");
    for(int i = size; i >=0; i--){
        printf("%c", expression[i]);
    }

    return 0;
}

Buenas a todos.
 
Comparto el reto.

int main(void) {
  
  printf("\nCADENA devuelta en orden inverso\n\n\n");

  char cadena[50];
  int size;

  printf("Ingresa una cadena: ");
  gets(cadena);
  printf("\n");
  size = strlen(cadena);

  printf("Cadena en orden inverso: ");
  for(int i = size; i >= 0; i--)
  {
    printf("%c", cadena[i]);
  }

  printf("\n\n");
  
  return 0;
}

Un saludo y gracias.

Here is my task

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

int main ()
{
printf ("This is my task! \n");
char myName [100];
char nameRev [100];
int sizeName;

printf ("Enter the name: ");
gets(myName);

printf ("This is my name: ");
puts (myName);
printf ("\n");


sizeName = strlen (myName);
printf ("This is the size of my name: %i \n", sizeName);

printf ("\n My name in reverse is: ");
for (int i = sizeName ; i >= 0; i--)
{
    printf (" %c", myName[i]);
}


    return 0;
}

Técnicamente completé el reto, pero con la función printf no puedo imprimir carácteres especiales como la Ñ, y las tildes, si alguien sabe cómo invertir la cadena de texto y pasar el argumento a puts(reverse) para que muestre la cadena de texto con el array de strings invertido se lo agradecería.

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

int main()
{
    int x = 64;
    char texto[x];
    char reverse[x];
    int largo;
    printf(" \nIngresa el texto que quieres invertir (Límite de %i caracteres) \n", x);
    fgets(texto, 64, stdin);
    largo = strlen(texto);
    printf("Mostrando texto invertido: ");
    for (int i = largo; i >= 0; i--)
    {
        printf("%c", texto[i]); //texto no mostrará carácteres especiales como ñÑ y acentos
        reverse[largo - i] = texto[i]; //no sé cómo hacer para mover este cadena a puts(reverse)
        //printf("%c", reverse[largo - i]); //si imprimes esta función verás que el array imprime el string en el orden inverso.
    }
    printf("\n%i caracteres", largo);
    return 0;
}

Reto:Cadena Inversada

char Inverse[50];
int Size;

printf("\t\t Dame palabras para que las veas inversas \n\n");

printf("Ingresa la palabra: ");
gets(Inverse);
Size = strlen(Inverse);

printf("\n\n");

for(Size >= 0; Size--;)
{
    printf("%c", Inverse[Size]);
}

printf("\n\n");

return 0;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    printf("\t Reto: Cadena de Caracteres (string)\n");
    
    char nameC[50];
    
    int size;
    
    printf("Ingresar el nombre:\n");
    
    gets(nameC);
    
    printf("El nombre es: ");
    puts(nameC);
    
    size = strlen(nameC);
    
    printf("\n El tamaño de la cadena es: %i \n", size);
    
    printf("\n Cadena invertida:\t");
    
    for(int i = size; i >= 0; i--)
    {
        printf("%c", nameC[i]);
    }
    
    return 0;
}
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Cadena de Caracteres \n");

    char Cadena[50];
    int size;

    printf("Ingresa una cadena de caracteres \n");
    gets(Cadena);

  //  printf("La Cadena es: \n");
    //puts(Cadena);
    size = strlen(Cadena);
   // printf("La longitud de la cadena es: %i \n", size);

    printf("La cadena al revez es: \n");
     for(int i = size; i>=0; i--){

        printf(" %c ", Cadena[i]);
     }
       


    return 0;
}

Para recoger información del stdin del usuario podemos usar scanf(), gets() y fgets()

Mi solución

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

int main()
{
    char text[21];
    int textSize;

    printf("Introduce un texto:\n\n");
    gets(text);

    textSize = strlen(text);
    printf("\n\n");
    for(int c=textSize-1;c > -1;c--){
        printf("%c",text[c]);
    }
    printf("\n\n");
    return 0;
}

RETO

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

main()
{
	printf("cadena de caracteres \n");
	
	char nombre[50];
	int size;
	printf("Ingresar el nombre con gets\n");
	gets(nombre);
	
	printf("El nombre es: ");
	puts(nombre);
	size=strlen(nombre);
	printf("el nombre invertido es: \n");
	for(int i=size;i>=0;i--)
	{
		printf("%c",nombre[i]);
	}
	
}

RETO
Quise guardar el string invertido en una nueva variable.

#include <stdio.h>
#include <stdlib.h>
#include <string.h> // Esta línea me la recomienda el compilador

int main() {
    char name[50];
    char name_rev[50];
    int size; 

    printf("Introduzca una palabra: ");
    fgets(name,50,stdin); // El compilador igualmente me recomienda utilizar esta función 
    for (int i=0; i<=size; i++) {
        name_rev[i] = name[size-i];
    }
    printf("Cadena Original: ");
    puts(name);
    printf("Cadena invertida: %s",name_rev); // imprime cadenas con %s
}

Incluyo el <string.h> porque lo recomienda el compilador, parece que tiene que ver con la función strlen(), que está incluida en esa librería. De igual forma el compilador me recomendó cambiar la función gets() por fgets(), aunque esta necesita más parámetros: cadena, longitud, método de entrada. También descubrí que se puede imprimir una cadena en el printf utilizando %s.

Reto completado,

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

int main()
{
    printf("Reto cadena de Caracteres");

    char nameC[50];
    int size;

    printf("Ingresa el nombre: \n");
    gets(nameC);

    size = strlen(nameC);

    printf("El nombre invertido es; ");

    for(int i = size; i>=0; i-- )
    {
        printf("%c", nameC[i]);
    }
    printf("\n");
    return 0;
}

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

int main()
{
printf(“Cadena de caracteres \n”);

char nameC[50];
char inv_name[50];
int size;

printf("Ingresar el nombre con gets: \n");
gets(nameC);
printf("El nombre es: ");
puts(nameC);
size = strlen(nameC);
for(int i = size; i >= 0; i--)
{
    inv_name[i] = nameC[i];
    printf("%c", inv_name[i]);

}


printf("\n El tamagno de la cadena es: %i \n", size);

return 0;

}

Retito de reverse string

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

int main()
{
    char nameC[12], nameR[12];
    int size;
    printf("Ingresa la palabra con gets: \n");
    gets(nameC);
    size = strlen(nameC);
    int j = 0;

    for(int i = size - 1; i >= 0; i--){
        nameR[j] = nameC[i];
        /* printf("%c\n", nameC[i]); */
        j++;
    }

    puts(nameC);
    puts(nameR);
}

Reto cumplido con la ayuda de los compañeros 😃

Mi aporte sobre como hice el programa 😃

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

int main()
{
    char nameB[50];
    int size;

    printf("Dame tu nombre \n");
    gets(nameB);

    size = strlen(nameB);
    printf("El tamaño es: %i \n", size);


    printf("Tu nombre al contrario es: ");
    for(int i = size - 1; i >= 0; i--)
    {
        printf("%c", nameB[i]);
    }




    return 0;
}

Reto

la solución a mi reto 🤟

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

int main(void) {
  printf("Strings c\n");
  char letra;
  char name[20];
  printf("Escriba su nombre: ");
  fgets(name, 20, stdin);
  printf("el nombre es: ");
  puts(name);
  int size = strlen(name);
  for(int i = size-2; i>=0; i--){
  letra = name[i];
  printf("%c",letra);
  }
  return 0;
}

Que tal campeon! buen dia… increible reto.

Me base en imprimir numeros al reves con ciclo ‘for’

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

int main() {
  char charString[100];
  int size;

  printf("\ninput the string: ");
  gets(charString);

  printf("\nname of the string is: ");
  puts(charString);

  size = strlen(charString);
  printf("size of the string is: %i\n\n", size);


  printf("Reverse of the string is: ");
  for (int i = size; i >= 0; i--) {
    printf("%c ", charString[i]);
  }
  printf("\n\n");

  for (int j = 10; j >= 0; j--) {
    printf("%i ", j);
  }
  printf("\n");

  return 0;
}

Buenas, comparto mi resolución, saludos!

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

int main()
{
    printf("Reto Cadenas de caracteres\n");

    char name[20];
    int size;




    printf("Ingrese su nombre: ");
    gets(name);

    size = strlen(name);

    char invertedName[size+1];




    for(int i = 0; i<size;i++){

        if(i==0){
            invertedName[i] = name[size-i-1];
        }
        else{
            invertedName[i] += name[size-i-1];

        }

    }

    printf("Su nombre al reves es: ");
    puts(invertedName);

    return 0;
}

La función “gets” me devolvía un error (Manjaro/Z shell), por lo que utilicé fgets, y además a eso la función strlean me contaba un carácter de más, así que incluí una sustracción para corregirlo:

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

int main()
{
    printf("********************Cadena de caracteres********************\n\n");

    char chain[50];
    int size;

    printf("Ingresa una cadena de caracteres y yo te la devolveré de forma invertida: \n\n");

    fgets(chain, sizeof chain, stdin);

    size = strlen(chain) - 1;

    // printf("\nEl tamaño de la cadena es: %i \n", size);

    for (int i = size; i >= 0; i--)
    {
        printf("%c", chain[i]);
    }

    printf("\n\nxd\n");

    return 0;
}

Hola 😃 les comparto mi código del reto 1.

#include <stdio.h>

int main()
{
    char name[50];
    int size;

    printf("Hola, Como te llamas?: ");
    gets(name);
    size = strlen(name);

    printf("Tu nombre al reves es: ");
    for(int i = size; i>0 ;i--){
        printf("%c",name[i-1]);
    }
    return 0;
}

Comparto mi código:

    char cadena[60];
    int cadenaLength;
    printf("Introduce una cadena de caracteres:\n");
    gets(cadena);
    cadenaLength=strlen(cadena);
    if(cadenaLength>0){
        printf("\nLa cadena invertida es:\n\n");
        for(int i=cadenaLength-1;i>=0;i--){
            printf("%c", cadena[i]);
        }
        printf("\n");
    }```

Solución del reto:

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

    int main()
{
    printf("Escribe una cadena de caracteres y la invertire para ti\n\n");

    char stringA[50];
    int size;

    printf("Escribe aqui tu cadena: ");
    gets(stringA);

    size = strlen(stringA);

    printf("\nLa cadena invertida se ve asi: ");

    for(size = size - 1; size >= 0; size--)
    {
        printf("%c", stringA[size]);
    }
    printf("\n");

    return 0;
}

My notes

String

a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable. The latter may allow its elements to be mutated and the length changed, or it may be fixed

gets()

The gets() function enables the user to enter some characters followed by the enter key. All the characters entered by the user get stored in a character array. The null character is added to the array to make it a string. The gets() allows the user to enter the space-separated strings. It returns the string entered by the user.

char name[50];
gets(name);

puts()

The puts() function is very much similar to printf() function. The puts() function is used to print the string on the console which is previously read by using gets() or scanf() function. The puts() function returns an integer value representing the number of characters being printed on the console. Since, it prints an additional newline character with the string, which moves the cursor to the new line on the console, the integer value returned by puts() will always be equal to the number of characters present in the string plus 1.

char name[50] = {'P','e','d','r','o'};
puts(name);

strlen()

The strlen() function returns the length of the given string. It doesn’t count the null character ‘\0’.

#include <stdio.h>  
#include <string.h>

int main(){    
char ch[20]={'j', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't', '\0'};    
   printf("Length of string is: %d",strlen(ch));    
 return 0;    
}

Output will be:

Length of string is: 10

fgets()

The fgets() function reads a line of characters from a file. It gets a string from a stream.

Syntax:

fgets(char *s, int n, FILE *stream)

Example:

void main(){    
	char text[300];     
	fgets(text, 300, stdin);  
}

En mi código para mostrarlo de forma invertida cambie los valores internamente del array

#include <stdio.h>
#include <string.h>

int main()
{
    char name[50], temp;
    int count, size;
    printf("Ingress a string: ");
    fgets(name, 50, stdin);
    size = strlen(name);

    //resting the null index
    --size;
    count = size;
    if (size % 2 != 0)
    {
        size += 1;
    }

    size /= 2;

    for (int i = 0; i < size; i++)
    {
        temp = name[i];
        name[i] = name[count];
        name[count] = temp;
        count -= 1;
    }
    puts(name);
}
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Cadena de caracteres\n");

    char name[50];
    printf("Escribe la palabra aqui: ");
    gets(name);
    
    int size = strlen(name);
    printf("La palabra invertida es: ");
    for(int i = size-1; i < 50 && 0 <= i ; i--)
    {
        printf("%c", name[i]);
    }
    return 0;
}

Este es mi reto, aunque me quedé algo insatisfecho con esta clase por el tema de gets, porque aparentemente es mejor usar fgets pero no se dice nada y en general trata el tema de una manera muy superficial xd

#include <stdio.h>
#include <string.h>

int main() {
    char texto[50];

    printf("Ingresa un texto\n");
    gets(texto);

    for (int i = strlen(texto); i >= 0; i--) {
        printf("%c", texto[i]);
    }

    return 0;
}

Mi solución

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

int main()
{
    /*
        Haz un programa que reciba una cadena de caracteres e imprima de regreso la misma cadena invertida
    */
    printf("Reto 14\n");
    char string[10];
    int i;
    int length;
    printf("Ingresa una cadena de texto: \n");
    gets(string);
    length = strlen(string);

    for(i = length; i >= 0; i--)
    {
        printf("%c",string[i]);
    }
    return 0;
}

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

int main()
{
    while(1){
        printf("Cadena de caracteres\n\n");
        char text[50];
        int size;

        printf("Ingresa tu texto: \n");
        gets(text);

        size = strlen(text);
        char textBack[size];

        printf("El texto al reves es: ");
        int n = 0;

        for(int i = size;i>=0;i--){
            textBack[n] = text[i-1];
            n++;
        }
        puts(textBack);
    }
    return 0;
}

//invoke the libraries be use
#include <stdio.h>
#include <stdlib.h>

//the main function 
int main()
{
    char nameC[50];

    int size;

    printf("String Characters! \n");

    printf("Enter the name with gets! \n");

    //gets allow collect information with 15 characters limit.
    gets(nameC);

    printf("The name is: \n");

    //gputs allow send the information collected by gets.
    puts(nameC);

    //in the empty variable 'size' we save the integer number of the length of characters of the array
    size = strlen(nameC);

    //in the 'for loop' the variable 'integer counter' is igual to 'integer value' of variable  size = "9".
    //so now counter value 9 then subtract 1 from counter and print this character,
    //this character will be printing is the last character in the las position in the array.
    //and now counter is igual to 8 and repeat to the last value in the variable 'integer'
    //this las value in the variable is igual to the first character in the array.
    for(int counter = size; counter >= 0; counter--)
    {
        printf("The name in reverse is : %c \n", nameC[counter]);
    }

    return 0;
}

RETO COMPLETADO

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

int main()
{
    printf("\t\t Reto 18\n");

    int sizeC;
    char challengeCArray[50];

    printf("Ingresa una frase: ");
    gets(challengeCArray);

    printf("Tu texto es: ");
    puts(challengeCArray);

    sizeC = strlen(challengeCArray);

    printf("La frase al reves es: ");
    for(int i = 0; i < sizeC ; i++)
    {
        printf("%c", challengeCArray[(sizeC - 1) - i]);
    }

    return 0;
}

Para aquellos que tienen difulta usando una versión moderna de C/C++ con gets:

gets
fue una función antes de la versión C89, se volvió obsoleta en C99 y en C11 fue removido.

Reto

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

int main(int argc, char const *argv[])
{
    char name[50], reverse[50] = {};
    int size;

    printf("Introdusca su nombre: ");
    fgets(name, 50, stdin);

    size = strlen(name);

    for (int i = 0; i <= size; i++)
    {
        reverse[i] = name[size - i];
        printf("%c", reverse[i]);
    }
    return 0;
}

Solución al reto

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

int main()
{
   printf("reves-al\n");

   char texto[100], textoReversado[100];

   printf("Digita lo que quieras, [email protected] te lo devolvemos al reves :)\n: ");
   fgets(texto, 100, stdin); //No pude usar gets() al compilar en Ubuntu asi que esta es la alternativa. Solo hay que agregar la longitud del texto y stdin, que según encontré, es algo especifico para sistemas unix
   int longitudTexto = strlen(texto);
   
   for(int i = 0; i < longitudTexto; i++)
      textoReversado[i] = texto[longitudTexto-1-i];

   printf("%s\n", textoReversado);

   return 0;
} 

Buenas amigos, para este ejempli simplemente tuve que usar dos cosas la librería “string.h” y una funcion de la libreria que es “strrev”, la cual nos permite imprimir alrevez una cadena de caracteres, espero que esto pueda servirles!

#include <stdio.h>
#include <string.h>

int main()
{
    char nameC[50];
    printf("Ingresa el nombre: ");
    gets(nameC);
    printf("El nombre normal es: ");
    puts(nameC);
    strrev(nameC);
    printf("El nombre alrevez es: %s", nameC);
    
    return 0;
}

Mi solución

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

int main(){
    char name[15];
    int size;

    printf("Escribe la cadena: ");

    gets(name);

    size= strlen (name);
    printf("\n");
    for(int i=size-1; i>=0; i--){

        printf("%c",name[i]);
    }

    }



mi solucion al problema, espero explicarme bien

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

int main(){

    char oracion[50],aux;
    int size;

    printf("Ingresa un texto de maximo 50 Characteres\n");
//no me dejo usar gets(), asi que tube que cambiarlo por fgets()
    fgets(oracion,50,stdin);
    printf("la oracion original es: ");
    puts(oracion);

    size=strlen(oracion);
    
//utilizando un auxiliar vamos intercambiando las letras y los espacios de izquierda a derecha
//mientras que el valor de la variable izquierda sea menor a el tamaño total entre 2
    for(int izquierda=0, derecha=size-1; izquierda < (size/2); izquierda++, derecha--){
        aux= oracion[izquierda];
        oracion[izquierda]= oracion[derecha];
        oracion[derecha]=aux;
    }
    
    printf("\noracion invertida: ");
    puts(oracion);
    return 0;
}

Reto:

Hacer un programa que reciba una cadena de caracteres e imprima de regreso la misma cadena de forma invertida.

Reto 2 (viene en el documento PDF)
El enlace que me ayudó 😃

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

int main()
{

    printf("PassWord\n");
    char usuario[] = {'J','o','e','l','\0'};
    char contra[] = {'J','o','l','y','\0'};
    int correcto, correctops;
    char inusu[20], incon[20];

    printf("Favor de introducir usuario :");
    gets(inusu);

    correcto = strcmp(usuario,inusu);
    if(correcto == 0){
        printf("USUARIO CORRECTO\n");
        printf("Escriba PassWord :");
        gets(incon);
        correctops = strcmp(contra,incon);
        if(correctops == 0)
            printf("\nBienvenido\n");
        else
            printf("Contrasena incorrecta\n");
    }
    else
        printf("Usuario incorrecto\n");

    return 0;
}

¿Alguien me apoya con esto? ¿cual es el error en mi lógica? jaja

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

int main()
{
    printf("cadena de caracteres\n");
    char normal[50];
    int size;


    printf("Ingresa una cadena de caracteres: ");
    gets(normal);
    size = strlen(normal);
    char invertido[6];
   printf("la cadena de caracteres invertida es: ");
    for(int i = size; i>=0; i--){
    int j = 0;
    invertido[j] = normal[i];
    j++;
    }
    puts(invertido);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
  printf("Cadena de caracteres\n");
  
  char nameC[50];
  int size;

  printf("Ingresar el nombre con gets:\n");

  gets(nameC);

  printf("El nombre es: ");
  puts(nameC);

  size = strlen(nameC);
  printf("El tamaño de la cadena es: %i \n", size);

  printf("El nombre al revés, es:\n");
  for(int i = size; i >= 0; i--)
  {
    printf("%c", nameC[i]);
  }


  return 0;
}

Mi codigo es:

int main()
{
    printf("Reto nombre al reves \n");

    char NameChar[50];

    printf("Ingrese el nombre: \n");
    gets(NameChar);

    for (int i = 0; i < strlen(NameChar); i++)
    {
        printf("%c", NameChar[(strlen(NameChar) - 1) - i]);
    }

    return 0;
}```

Reto 😄

<int main()
{
    printf("Cadena de Caracteres!\n");

    char name[20];//nuestro arreglo tiene nombre y longitud 50.
    int size;//declaramos un entedero.

    printf("ingresar el nombre con gets: \n");//imprimimos una instrucción
    gets(name);//la variable donde guardaremos el dato ingresado

    printf("El nombre es:\n");
    puts(name);//funcion que permite leer una cadena de caracteres de gets.

    size = strlen(name);//el string lent la funcion para ver el tamaño del string.

    printf("Al revez el nombre se escribe:\n");
    for (int i = size; i >= 0; i--)
     {
       printf("%c ", name[i]);
     }
    return 0;
}>

Durante el mega apagón CDMX, EDOMEX y Aguascalientes

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

int main () {

    char Palabra[30];
    char PalabraReverso[30];
    int size,UP;
    printf("Escribe una palabra\n");
    gets(Palabra);
    printf("La palabra es: \n");
    puts(Palabra);
    size = strlen(Palabra);
    printf("La palabra tiene %i caracteres y espacios\n", size);

    for (int i = 0; i < size; i++){
        printf("Caracter en localidad %i es %c\n", i, Palabra[i]);
}
    for (int i =size-1; i >=0; i--){
        printf("Soy la letra %c\n",Palabra[i]);
        printf("Esta es la palabra alreves \n");
        PalabraReverso[UP] = Palabra[i];
        UP +=1;
        puts(PalabraReverso);
}

    /*for (int i = 10; i >= 1; i--){
        printf("Numero %i\n", i);
}*/
    return 0;
}

Buen reto

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

int main(void) {
  char name[150];
  int size;

  printf("Escribe tu nombre completo: ");
  gets(name);

  printf("Tu nombre es: ");
  puts(name);

  size = strlen(name);

  printf("Tu nombre tiene %i caracteres \n", size);

  printf("Tu nombre invertido es: ");
  for(int i = size; i > -1; i--){
    printf("%c", name[i]);
  }

  return 0;
}```

Me quedo asi el reto , aunque sient que se puede hacer igual con punteros pero no pude de esa manera.

int main()
{
    char name[50];
    int size,j=0;
    printf("ingrese la casdena de caracteres\n");
    gets(name);
    printf("El nombre es :");
    puts(name);
    size= strlen(name);
    size--;
    printf("el nombre alrevez es\n");
    for(int i=0;i<=size;size--){
        printf("%c",name[size]);
    }
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (){
    char string[100];
    int size;

    printf("Type an sentence:\t");
    scanf("%s", &string);
    size = strlen(string);
    for(int index = size- 1; 0 <=index; index--){
        printf("%c", string[index]);
    }
    printf("\n");
}

Este es el resultado del reto:

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

int main()
{


    char userName[30];
    int size, i;

    printf("Ingresar el nombre: ");
    gets(userName);

    size = strlen(userName);

    //usar strlen y ponerlo en for
    for(i=size-1; i>=0; i--){
        printf("%c", userName[i]);
    }

    return 0;
}

![](

Solución al Reto:

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

int main()
{
    //Hacer un programa que reciba una cadena de
    //caracteres e imprima de regreso la misma 
    //cadena de forma invertida
    printf("Cadena de caracteres invertida \n\n");

    char string[100];

    printf("Ingresa la cadena de texto que deseas invertir: ");
    gets(string);

    int size = strlen(string);

    printf("Tu cadena de texto invertida es: ");
    for (int i = size; i >= 0; i--)
    {
        printf("%c", string[i]);
    }
    
    return 0;
}

ADJUNRO MI RESOLUCION DEL RETO:

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

int main()
{
    printf("RETO CADENA DE CARACTERES \n");

    char Cadena[50];
    int size;

    printf("Ingresa una cadena de caracteres \n");
    gets(Cadena);

    printf("\nLa cadena al revez es: \n");
     for(int i = size; i>=0; i--){
        printf(" %c \n", Cadena[i]);
     }

    return 0;
}

reto
invertir la palabra

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>//para los bools

int main ()
{
    //declaro mis variables
    char palabra[50];//array de mi palabra
    int size;//variable para saber el tamanio
    printf("Ingrese un texto: \n");//imprimo mi peticion
    gets(palabra);//la guardo
    size = strlen(palabra);//le paso cuanto mide
    printf("El texto ");
    puts(palabra);//imprimo la palabra para comparar con mi otro resultado
    printf(" al reves es: ");
    for(int i = size;i >= 0; i--)
    {
        printf("%c", palabra[i]);//aqui ya se imprime al reves
    }
     return 0;
}```

Reto resuelto

int main()
{
    printf("Cadena de caracteres\n");

    char nameA[50];
    int size;

    printf("Favor de introducir la palabra a invertir \n");

    gets(nameA);

    printf("La palabra ingresada es: \n");
    puts(nameA);
    printf("\n");

    size = strlen(nameA);

    for(int x = size; x >= 0; x--)
    {
        printf("%c", nameA[x]);
    }

    return 0;
}```

Mi versión del reto es:

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

int main()
{
    char name[50];
    int size;
    printf("Ingrese un texto: \n");
    gets(name);
    size = strlen(name);
    printf("El texto ");
    puts(name);
    printf(" al revez es: ");
    for(int i = size;i >= 0; i--)
    {
        printf("%c", name[i]);
    }
    return 0;
}```
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Cadena de caracteres (string)\n");

    char word[50];
    int reverse;

    printf("Ingresa la palabra que quieres invertir: \n");
    gets(word);

    reverse = strlen(word);

    printf("La palabra invertida es : \t\t");
    for(int i = reverse; i >= 0; i--){
    printf("%c",word[i]);
    }

    return 0;
}

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

int main()
{
printf(“Cadena de Caracteres \n”);

 char longitud[40];
 int size;
 printf("Ingresa el nombre: \n");

 gets(longitud);
 printf("El nombre invertido es: ");
 size = strlen(longitud);

 for(int i = size; i >=0; i--){
    printf("%c", longitud[i]);
 }
return 0;

}

int main()
{
printf(“cadena de caracteres al reves \n”);

char arrayC[50];

printf("ingresa el nombre: ");
gets (arrayC);
int size = strlen (arrayC);

char arrayR [size];
int j = 0;

for (int i = size; i >= 0; i--)
{
    arrayR[i-1] = arrayC [j];
    j++;
}
printf("reves: ");
puts(arrayR);

return 0;

}

Reto

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

int main()
{
    printf("Cadena de caracteres\n");

    char nameC[50];

    int size;

    printf("Ingresar el nombre con gets: \n");
    gets(nameC);

    size = strlen(nameC);

    printf("El nombre al revés es: ");
    for(int i =size; i>=0; i--)
    {
        printf("%c", nameC[i]);
    }





    printf("\n El tamaño de la cadena es: %i \n", size);

    return 0;
}