Mj preguntado en EducaciónAyuda con los estudios · hace 1 mes

¿Quiero pasar datos de un fichero a un registro HELP?

Debo leer un fichero que contiene letras, números y la traducción de estos en código morse. Ejemplo: A .-* (la * es una centinella). He logrado leer y mostrar lo que hay en el fichero y también poner las letras y números en una variable del registro y la traducción en otra. Lo que pasa es que solo pone la letra A en la variable letras y todo lo demás esta en la variable traducción, como lo puedo arreglar? En la imagen se ve lo que se guardó en el registro, se me repite dos veces letra y traducción. Si os fijáis la A es la única letra que está en letra, lo demás está en traducción. Después de abrir el fichero puse esto. Esta bien? Claramente el programa sigue pero esta es la parte que me falla.

if (fit!=NULL)

    {

        while (!feof(fit))

            {

                fscanf(fit,"%c %s",&dicc[contador].lletra,dicc[contador].codi_morse);

                contador++;

            }

            for(i=0; i<contador;i++)

            {

                printf("lletra: %c\n", dicc[i].lletra);

                printf("traduccio: %s\n", dicc[i].codi_morse);

            }

Attachment image

2 respuestas

Calificación
  • hace 1 mes

    Roberto al hacer lo que me dijiste me muestra esto,las letras estan en letras pero tabien se encuentra la traducción junto a ellas.

    Attachment image
    • Roberto
      Lv 7
      hace 1 mesReportar

      Creo que hay una manera de decirle que el %s tiene una longitud de 1 caracter para que solo agarre el priemro. Lee la documentación de fscanf para ver como especificar la longitud.

    • Inicia sesión para responder preguntas
  • hace 1 mes

    Hace mucho que no veo nada de C. Tal vez está leyendo los espacios y los retornos de línea como un caracter (%c). Eso explicaría también porque algunas letra: tienen un renglón vacío y otras no.

    Tal vez te convenga decirle que quieres que lea otra %s en vez de %c, así no toma en cuenta los espacios.

    • ...Mostrar todos los comentarios
    • Mjhace 1 mesReportar

      Roberto puse las fotos de lo que me muestra el programa usando lo que me dijistes, ves alguna forma de poder arreglarlo?

    • Inicia sesión para responder preguntas
¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.