Bueno, te dejo aquí un ejemplo:
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í:
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:
Código (c) [Seleccionar]
#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í:
Código (c) [Seleccionar]
// 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:
Código (c) [Seleccionar]
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);
}