es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo conseguir que un documento TXT que incluye un nombre y tres calificaciones se convierta en un documento CSV y colocar cada calificación en una ranura separada.

El documento txt incluye:

Mayer 1.3 1.7 4.0
Mueller 2.0 3.0 4.0
Schulze 1.7 5.0 4.0

Hasta ahora logré copiar los nombres y las notas, pero cada nombre y sus notas están en una sola ranura.

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

int main()
{
    FILE *noten, *noten_excel1, *noten_excel2;
    int zeichen;

    printf("\n");

    if ((noten = fopen("C:\\Users\\seidel\\Desktop\\InfoC\\noten.txt", "r")) == NULL) {
        printf("lectura fallida\n");
        exit(1);
    }
    if ((noten_excel1 = fopen("C:\\Users\\seidel\\Desktop\\InfoC\\noten_excel1.csv", "w")) == NULL) {
        printf("escritura fallida\n");
        exit(1);
    }

    while ((zeichen = fgetc(noten)) != EOF)
    {
        fputc(zeichen, noten_excel1);
    }
    fclose(noten);
    fclose(noten_excel1);
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para separar los nombres y las calificaciones en el documento de texto, puedes utilizar la función fscanf para leer cada línea y almacenar los valores en variables separadas. Aquí tienes un ejemplo de código:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        FILE *noten, *noten_excel1;
        char name[20];
        float note1, note2, note3;
    
        if ((noten = fopen("C:\\Users\\seidel\\Desktop\\InfoC\\noten.txt", "r")) == NULL) {
            printf("lesen fehlgeschlagen\n");
            exit(1);
        }
        if ((noten_excel1 = fopen("C:\\Users\\seidel\\Desktop\\InfoC\\noten_excel1.csv", "w")) == NULL) {
            printf("schreiben fehlgeschlagen\n");
            exit(1);
        }
    
        while(fscanf(noten, "%s %f %f %f\n", name, &note1, &note2, &note3) == 4) {
            fprintf(noten_excel1, "%s,%f,%f,%f\n", name, note1, note2, note3);
        }
    
        fclose(noten);
        fclose(noten_excel1);
    
        return 0;
    }
    

    En este código, utilizamos la función fscanf para leer cada línea del documento de texto y almacenar los valores en variables separadas: name para el nombre, note1, note2 y note3 para las tres calificaciones. Utilizamos el especificador de formato %s para leer el nombre como una cadena de caracteres, y %f para leer las calificaciones como valores de tipo flotante. El \n al final de la cadena de formato lee y descarta el carácter de nueva línea al final de cada línea.

    Luego, utilizamos la función fprintf para escribir los valores en un archivo CSV, donde cada línea contiene el nombre y las tres calificaciones separadas por comas. El archivo noten_excel1.csv puede abrirse en Excel como una hoja de cálculo.</stdlib.h></stdio.h>

Comments are closed.