Quiero poner un personaje de una variable en una matriz de caracteres en C. También quiero imprimir la inversa de la matriz a posteriori, como se puede ver, pero ese no es el tema ahora.

Este es el código que tengo hasta ahora:

Como stdin estoy usando un fichero de texto con «< input.txt» como un argumento de línea de comandos, y tiene 57 caracteres.

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

int main()
{
  int counter = 0;
  char character_array[57];
  int i = 0;
  int j = 0;
  char character = 0;

  //While EOF is not encountered read each character
  while (counter != EOF) 
  {
    //Print each character
    printf("%c", counter);
    //Continue getting characters from the stdin/input file
    counter = getchar(stdin);
    //Put each character into an array
    character_array[j] = { counter };
    j = j + 1;
  }

  //Print the array elements in reverse order
  for (i = 58; i > 0; i--)
  {
    character = character_array[i];
    printf("%c", character);
  }

  return 0;
}

Mi IDE dice en la línea 35 después de la primera llave de «espera de expresión».

//Put each character into an array
    character_array[j] = { counter };

Por lo que creo que falla ahí. Asumo que no puede poner la variable de caracteres igual que en la matriz? ¿Cómo puedo hacer esto de otra manera?

PS: soy nuevo en el C.

  • ¿has probado a quitar la { y } alrededor de counter?
  • character_array[j] = counter; Pero es mejor usar scanf( "%s", character_array ); y leer toda la cadena a la vez. Tenga en cuenta que usted character_array matriz es mejor ser más!
  • y getchar(stdin) –> getchar()
  • Gracias a todos, la eliminación de las llaves trabajado!
InformationsquelleAutor LoLei | 2014-11-14

2 Comentarios

  1. 0

    Quitar el { y } en esa línea, por lo que parece :

    character_array[j] =  counter ;

    Mejora código:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      int counter = 0;
      char character_array[57];
      int i = 0;
      int j = 0;
      //char character = 0; Unused variable
    
      //While EOF is not encountered read each character
      while ((counter = getchar()) != EOF) 
      {
        //Print each character
        printf("%c", counter);
        character_array[j] = counter;
        j++;
      }
      for (i = j - 1; i >= 0; i--) /* Array indices start from zero, and end at length - 1 */
      {
        printf("%c", character_array[i]);
      }
    }
    • Trabajado, gracias!

Dejar respuesta

Please enter your comment!
Please enter your name here