elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con fprintf
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con fprintf  (Leído 3,635 veces)
Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Ayuda con fprintf
« en: 19 Abril 2013, 19:08 pm »

Hola gente tengo un problema , va mas que un problema una consulta , vean esta linea de código ...

Código
  1. fprintf(miarchivo,"%s%s%d",nPersona.nombre,nPersona.apellido,nPersona.telefono);

esto va a escribir en un archivo de la siguiente manera ...
Citar
Nombre
Apellido
156XXXX
bueno yo lo que quiero es que se escriba asi ...
Citar
Nombre           Apellido          156XXXX

con algún tipo de tabulacion o algo por el estilo , algún consejo ? S2!


En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #1 en: 19 Abril 2013, 19:18 pm »

Pues usa la secuencia de escape de la tabulacion que es \t en tu cadena de formato del frintf().


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #2 en: 19 Abril 2013, 20:18 pm »

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:
Código
  1.   miarchivo, "%-Xs%-Ys%-Zd",
  2.   nPersona.nombre,
  3.   nPersona.apellido,
  4.   nPersona.telefono
  5. );

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
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #3 en: 19 Abril 2013, 20:24 pm »

Simple,claro y preciso. Me encantan tus lecciones rir3760. Siempre aprendiendo de tus respuestas.

Gracias por compartir tus amplísimos conocimientos  de C/C++ con los demás y "por nada".

Un fuerte saludo, "fenómeno".
En línea

Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #4 en: 19 Abril 2013, 22:01 pm »

sigo con el mismo problema , se hace un salto de linea aunque le agrege esto ..
Código
  1. fprintf(miarchivo,"%-50s%-50s%-50d",nPersona.nombre,nPersona.apellido,nPersona.telefono);

no se que ondaa :S
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #5 en: 20 Abril 2013, 02:48 am »

sigo con el mismo problema , se hace un salto de linea aunque le agrege esto ..
Código
  1. 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í:
Código
  1. #include <string.h>
  2.  
  3. /* ... */
  4.  
  5. char *p;
  6.  
  7. /* ... */
  8.  
  9. p = strchr(nPersona.nombre, '\n');
  10. if (p != NULL)
  11.   *p = '\0';
  12.  
  13. p = strchr(nPersona.apellido, '\n');
  14. if (p != NULL)
  15.   *p = '\0';
  16.  
  17.   miarchivo, "%-50s%-50s%-50d",
  18.   nPersona.nombre, nPersona.apellido, nPersona.telefono
  19. );

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 Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #6 en: 20 Abril 2013, 03:35 am »

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 ...
Código
  1. 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 Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #7 en: 20 Abril 2013, 06:24 am »

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 ...
Código
  1. 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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAX_CHARS  256
  6.  
  7. struct reg {
  8.   char nombre[MAX_CHARS];
  9.   char apellido[MAX_CHARS];
  10.   long telefono;
  11. };
  12.  
  13. int main(void)
  14. {
  15.   struct reg nPersona;
  16.   char *p;
  17.  
  18.   puts("Nombre:");
  19.   fgets(nPersona.nombre, MAX_CHARS, stdin);
  20.   p = strchr(nPersona.nombre, '\n');
  21.   if (p != NULL)
  22.      *p = '\0';
  23.  
  24.   puts("Apellido:");
  25.   fgets(nPersona.apellido, MAX_CHARS, stdin);
  26.   p = strchr(nPersona.apellido, '\n');
  27.   if (p != NULL)
  28.      *p = '\0';
  29.  
  30.   nPersona.telefono = 123456789;
  31.  
  32.   fprintf(
  33.      stdout, "%-30s%-30s%-18ld\n",
  34.      nPersona.nombre, nPersona.apellido, nPersona.telefono
  35.   );
  36.  
  37.   return EXIT_SUCCESS;
  38. }

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 Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda con fprintf
« Respuesta #8 en: 20 Abril 2013, 07:01 am »

Sos un genio !, Muchas gracias.
 S2!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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,197 Último mensaje 4 Mayo 2010, 05:09 am
por Littlehorse
Ayuda por davor ayuda os ruego ayuda XD (SOLUCIONADO)
Hardware
XxRekcahlExX 6 11,168 Último mensaje 24 Mayo 2010, 00:56 am
por Aprendiz-Oscuro
fprintf y fputs
Programación C/C++
Gr1nD3r 2 4,639 Último mensaje 16 Julio 2010, 19:57 pm
por nicolas_cof
funcion fprintf
Programación C/C++
flony 2 2,482 Último mensaje 19 Enero 2013, 02:57 am
por flony
Ayuda con fprintf y fgets [Solucionado]
Programación C/C++
Luchoz95 5 4,492 Último mensaje 21 Abril 2013, 17:31 pm
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines