ayuda rellenar ficheros C

Iniciado por ryhuso, 26 Noviembre 2019, 08:22 AM

0 Miembros y 2 Visitantes están viendo este tema.

ryhuso

hola soy nuevo en C y me mandaron un ejercicio de como crear una función que rellene un fichero de cliente ,no explico ni matrices ni nada estoy un poco perdido.
 Tiene que ser con fopen ..... y poner la funcion separada en otro fichero.

K-YreX

Todo depende de cómo te estén dando la información. Tienes que ser más específico...
Revisa la librería <stdio.h> y las funciones que tiene. Avanza algo, lo que puedas, y coloca tus avances entre etiquetas de Código GeSHi para poder ayudarte mejor.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

ryhuso

la función permite el almacenamiento de los datos de los
clientes de la empresa en un fichero que se rellenará desde teclado. El formato de los datos a guardar es:
    Cliente            Gerente                  Número          Operador
Hnos. Lobo   Juan Pedro Molano        696345012       Movistar

La incorporación de los datos de clientes al fichero puede producirse en cualquier
momento de la ejecución de la aplicación, aunque la primera vez que se ponga en marcha la
aplicación haya que introducir algunos, como buena empresa que se precie que ya tiene sus
primeros clientes


ese es el enunciado y lo que me causa problemas es el manejo de ficheros ,ya busque algo pero no lo entiendo muy bien solo necesito algunos ejemplos en "C" si se puede para ubicarme de como uso el fopen y que propiedades tiene o puedo usar.
puesto que lo que encontre es en C++ o C#.

K-YreX

Bueno, te dejo aquí un ejemplo:

#define SIZE 100
int main(){
    char frase[SIZE];
    FILE *fichero = fopen("clientes.txt", "a"); // el segundo parametro = a -> agrega texto al final / = w -> borra lo que hay y agrega el nuevo texto
   
    printf("Introduce una frase: ");
    fgets(frase, SIZE, stdin); // las cadenas se guardan con fgets()

    fprintf(fichero, "%s", frase); // agrega una linea al final del fichero con la cadena guardada en frase

    fclose(fichero);
}

Además la función fgets() almacena también el ENTER de la entrada como un salto de línea al final de la cadena, por lo que cada frase se guardará en una línea diferente.
Cuando quieras evitar esto, puedes eliminar el salto de línea de la cadena así:

// Cabecera necesaria para utilizar la funcion strrchr()
#include <string.h>
//...
char *puntero = strrchr(frase, '\0'); // puntero que apunta al '\0' de la frase. El '\0' es siempre el ultimo caracter de una cadena en C
--puntero; // nos movemos una posicion a la izquierda para apuntar al salto de linea '\n' que esta justo antes del '\0'
*puntero = '\0'; // modificamos el '\n' por '\0' para indicar que la cadena termina ahi


Si por el contrario quieres guardar un dato en cada línea de un fichero y el valor no tiene el salto de línea implícito:

int main(){
    int edad;
    FILE *fichero = fopen("edades.txt", "a");

    printf("Introduce tu edad: ");
    scanf("%d", &edad);

    fprintf(fichero, "%d\n", edad); // Se agrega el salto de linea ahi

    fclose(fichero);
}
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

ryhuso