Autor
|
Tema: Ayuda con fprintf (Leído 3,616 veces)
|
Luchoz95
Desconectado
Mensajes: 58
|
Hola gente tengo un problema , va mas que un problema una consulta , vean esta linea de código ... fprintf(miarchivo ,"%s%s%d",nPersona. nombre,nPersona. apellido,nPersona. telefono);
esto va a escribir en un archivo de la siguiente manera ... Nombre Apellido 156XXXX bueno yo lo que quiero es que se escriba asi ... Nombre Apellido 156XXXX con algún tipo de tabulacion o algo por el estilo , algún consejo ? S2!
|
|
|
En línea
|
|
|
|
pacoperico
Desconectado
Mensajes: 100
|
Pues usa la secuencia de escape de la tabulacion que es \t en tu cadena de formato del frintf().
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
yo lo que quiero es que se escriba asi ... con algún tipo de tabulacion o algo por el estilo , algún consejo? Para imprimir en el archivo una linea de texto con el formato que mencionas puedes utilizar: miarchivo, "%-Xs%-Ys%-Zd", nPersona.nombre, nPersona.apellido, nPersona.telefono );
En la cadena de formato "%-Xs%-Ys%-Zd" se utiliza "-" para indicar una alineación a la izquierda mientras que "X", "Y" y "Z" indican la anchura en caracteres de cada campo o columna. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
Luchoz95
Desconectado
Mensajes: 58
|
sigo con el mismo problema , se hace un salto de linea aunque le agrege esto .. fprintf(miarchivo ,"%-50s%-50s%-50d",nPersona. nombre,nPersona. apellido,nPersona. telefono);
no se que ondaa :S
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
sigo con el mismo problema , se hace un salto de linea aunque le agrege esto .. fprintf(miarchivo ,"%-50s%-50s%-50d",nPersona. nombre,nPersona. apellido,nPersona. telefono);
La razón del avance de linea no es la llamada a función sino alguna de las cadenas. Lo mejor aquí es, cuando obtengas las cadenas, eliminar el avance de linea. Si no es posible y alguna de ellas puede contener el mentado carácter se puede verificar y de ser necesario eliminarlo. Una opción es mediante la función strchr (prototipo en <string.h>), mas o menos así: #include <string.h> /* ... */ char *p; /* ... */ p = strchr(nPersona. nombre, '\n');if (p != NULL) *p = '\0'; p = strchr(nPersona. apellido, '\n');if (p != NULL) *p = '\0'; miarchivo, "%-50s%-50s%-50d", nPersona.nombre, nPersona.apellido, nPersona.telefono );
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
Luchoz95
Desconectado
Mensajes: 58
|
eh probado con lo que me pasaste pero tampoco funciono , pero ya encontre el error , ahora tengo que solucionarlo ... el error esta en esta linea ... fgets(nPersona. nombre,50,stdin );
ahora estoy usando scanf para leer los nombres y apellidos , pero no le tengo muchas confianza , algun consejo ? S2!
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
eh probado con lo que me pasaste pero tampoco funciono El problema al solo comentar "no funciona" es que no hay forma de corregir el código fuente (el que sea). pero ya encontre el error , ahora tengo que solucionarlo ... el error esta en esta linea ... fgets(nPersona. nombre,50,stdin );
Con ello los campos nombre y apellido almacenaran el avance de linea como ultimo carácter, como ya te comente ese es el problema. Un programa donde se muestra como eliminar el avance de linea e imprimir con formato: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_CHARS 256 struct reg { char nombre[MAX_CHARS]; char apellido[MAX_CHARS]; long telefono; }; int main(void) { struct reg nPersona; char *p; fgets(nPersona. nombre, MAX_CHARS , stdin ); p = strchr(nPersona. nombre, '\n'); if (p != NULL) *p = '\0'; fgets(nPersona. apellido, MAX_CHARS , stdin ); p = strchr(nPersona. apellido, '\n'); if (p != NULL) *p = '\0'; nPersona.telefono = 123456789; stdout, "%-30s%-30s%-18ld\n", nPersona.nombre, nPersona.apellido, nPersona.telefono ); return EXIT_SUCCESS; }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
Luchoz95
Desconectado
Mensajes: 58
|
Sos un genio !, Muchas gracias. S2!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
fprintf funciona en dev pero no en visual c++ 2008
Programación C/C++
|
river_0119
|
1
|
2,193
|
4 Mayo 2010, 05:09 am
por Littlehorse
|
|
|
Ayuda por davor ayuda os ruego ayuda XD (SOLUCIONADO)
Hardware
|
XxRekcahlExX
|
6
|
11,129
|
24 Mayo 2010, 00:56 am
por Aprendiz-Oscuro
|
|
|
fprintf y fputs
Programación C/C++
|
Gr1nD3r
|
2
|
4,632
|
16 Julio 2010, 19:57 pm
por nicolas_cof
|
|
|
funcion fprintf
Programación C/C++
|
flony
|
2
|
2,472
|
19 Enero 2013, 02:57 am
por flony
|
|
|
Ayuda con fprintf y fgets [Solucionado]
Programación C/C++
|
Luchoz95
|
5
|
4,480
|
21 Abril 2013, 17:31 pm
por dato000
|
|