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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ayuda con strncpy y archivo.
« en: 4 Diciembre 2015, 14:39 pm »

Hola a todos soy nuevo en el foro. Les paso a contar este es un código que estaba practicando pero quede trabado en el camino, si me pudieran ayudar a solucionar mi problema se los agradeceré.
Lo que hace es abrir un archivo txt que tiene previamente cargado datos de nombre,profesión y edad para distinguir a cada uno uso un + para separarlas en el archivo.
La idea era llevarlo a esto para n personas cargadas. ya intente haciendo un for pero la verdad no lo he podido resolver. Saludos.

Este es el archivo txt
Código
  1. +Nuha Ali+C Programming+23+javier T+Electronic+45+


Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5.  
  6. void lectura (char Archivo[]);
  7.  
  8. typedef struct{
  9.       char nombre[200],p_profesion[200],p_edad[200];
  10.       }sujeto;
  11.  
  12. main() {
  13.  
  14.  
  15.       sujeto lista;
  16.       int i=0, j=0,k=0,n=1,c=0;
  17.       char Archivo [200],*pArchivo;
  18.       int l, p[10], *pp;
  19.  
  20.  
  21.       pp = p;
  22.       pArchivo = Archivo;
  23.  
  24.       lectura(Archivo);
  25.       for (i=0; i<300; i++) lista.nombre[i] = lista.p_profesion[i] = lista.p_edad[i] = 0;
  26.       printf ("Cadena provista por el Archivo:\n");
  27.       printf ("\n%s\n\n",pArchivo);
  28.       l = strlen(pArchivo);
  29.       for (i=0; i<l; i++){
  30.           if (*(pArchivo++) == '+' ){
  31.                             pp [j]= i;
  32.                             j++;
  33.                             }
  34.                             }  
  35.                             printf ("DATOS:\n\n");      
  36.  
  37.           strncpy(lista.nombre, Archivo+pp[0]+1,pp[1]-1);
  38.           strncpy (lista.p_profesion, Archivo+pp[1]+1,pp[2]-pp[1]-1);
  39.           strncpy (lista.p_edad, Archivo+pp[2]+1,pp[3]-pp[2]-1);
  40.           printf ("Nombre: %s\n",lista.nombre);
  41.           printf ("Profesion: %s\n",lista.p_profesion);
  42.           printf ("Edad: %s\n",lista.p_edad);
  43.  
  44.           strncpy(lista.nombre, Archivo+pp[3]+1,pp[4]-pp[3]-1);
  45.           strncpy (lista.p_profesion, Archivo+pp[4]+1,pp[5]-pp[4]-1);
  46.           strncpy (lista.p_edad, Archivo+pp[5]+1,pp[6]-pp[5]-1);
  47.           printf ("Nombre: %s\n",lista.nombre);
  48.           printf ("Profesion: %s\n",lista.p_profesion);
  49.           printf ("Edad: %s\n",lista.p_edad);
  50.  
  51.      getch();
  52. }
  53.  
  54. void lectura (char Archivo[])
  55. {
  56.     FILE *fichero;
  57.     fichero=fopen("3.txt","r");
  58.     if (fichero == NULL){
  59.        printf("\nError de apertura del archivo. \n");
  60.        }
  61. else{
  62.    while (feof(fichero)==0)
  63.          {
  64.          fgets(Archivo,200,fichero);
  65.          }
  66.          fclose(fichero);
  67.        }  
  68. }


Esta es la parte del código que yo quiero implementar para n personas. O sea hacerlo mas generalizado

Código
  1.           strncpy(lista.nombre, Archivo+pp[0]+1,pp[1]-1);
  2.           strncpy (lista.p_profesion, Archivo+pp[1]+1,pp[2]-pp[1]-1);
  3.           strncpy (lista.p_edad, Archivo+pp[2]+1,pp[3]-pp[2]-1);
  4.           printf ("Nombre: %s\n",lista.nombre);
  5.           printf ("Profesion: %s\n",lista.p_profesion);
  6.           printf ("Edad: %s\n",lista.p_edad);
  7.  
  8.           strncpy(lista.nombre, Archivo+pp[3]+1,pp[4]-pp[3]-1);
  9.           strncpy (lista.p_profesion, Archivo+pp[4]+1,pp[5]-pp[4]-1);
  10.           strncpy (lista.p_edad, Archivo+pp[5]+1,pp[6]-pp[5]-1);
  11.           printf ("Nombre: %s\n",lista.nombre);
  12.           printf ("Profesion: %s\n",lista.p_profesion);
  13.           printf ("Edad: %s\n",lista.p_edad);


En línea

furciorifa

Desconectado Desconectado

Mensajes: 94


Ver Perfil
Re: ayuda con strncpy y archivo.
« Respuesta #1 en: 4 Diciembre 2015, 16:53 pm »

Muy fácil estás repetiendo código innecesariamente no se te ha ocurrido otro for?


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ayuda con strncpy y archivo.
« Respuesta #2 en: 5 Diciembre 2015, 19:57 pm »

Muy buenas.

Para resolver tu problema lo que podrías hacer es leer el archivo línea a línea con fgets y, sobre la cadena adquirida, usar la función strtok con el separador + para recoger cada subcadena.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con un archivo *cue
Software
Quintus 2 2,133 Último mensaje 30 Octubre 2004, 10:58 am
por Quintus
AYUDA!!! Necesito ayuda para descifrar un archivo Ensamblado
Ingeniería Inversa
tritritsn 1 2,626 Último mensaje 4 Enero 2013, 18:22 pm
por MCKSys Argentina
dudas con strncpy y strncat
Programación C/C++
Drewermerc 2 1,429 Último mensaje 1 Mayo 2014, 20:13 pm
por Drewermerc
[AYUDA][PYTHON] Ayuda para pasar un archivo ZIP a Base64 y viceversa
Scripting
Noxware 2 3,823 Último mensaje 9 Julio 2014, 18:37 pm
por Noxware
AYUDA!! solicito ayuda con archivo flash
Foro Libre
billbull 2 2,002 Último mensaje 25 Septiembre 2015, 20:31 pm
por billbull
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines