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 鈥渧ariable鈥 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 鈥渃adenas 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(鈥淐adena 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 鈥榝or鈥

#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 鈥済ets鈥 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鈥檛 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 鈥渟tring.h鈥 y una funcion de la libreria que es 鈥渟trrev鈥, 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(鈥淐adena 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(鈥渃adena 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;
}