Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con ficheros C

Estas en el tema de Ayuda con ficheros C en el foro de C/C++ en Foros del Web. Hola a todos! Estoy haciendo una practica en la cual tengo un fichero con mogollón de direcciones de correo electronico separadas por una ",", y ...
  #1 (permalink)  
Antiguo 15/11/2006, 19:34
 
Fecha de Ingreso: julio-2002
Mensajes: 220
Antigüedad: 21 años, 9 meses
Puntos: 2
Ayuda con ficheros C

Hola a todos!

Estoy haciendo una practica en la cual tengo un fichero con mogollón de direcciones de correo electronico separadas por una ",", y se me pide poner una dirección por linea, todo ello leyendo el archivo de origen, y haciendo la modificacion en otro archivo.

He conseguido crear este codigo que creo que anda bien.. pero cuando lo ejecuto la consola se me cuelga.. lo que me da a pensar que la sintaxis está bien, pero el planteamiento lógico no... Si alguien me puede echar un cable se lo agradecería mil...

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main(void)
{
    FILE *of,*wf;
    int i;
    char acu[30];
    
    of=fopen("direcciones.txt","r");
    wf=fopen("direcciones1.txt","w");
    if(of==NULL){
        printf("Error al abrir el fichero!\n");
        system("pause");
        exit(1);
    }
    
    while(!feof(of)){
        fscanf(of,"%s, ",acu);
        fprintf(wf,"%s,\n",acu);
    }
    fclose(of);
    fclose(wf);
    printf("**Modificado de archivo/s terminado**\n");
system("PAUSE");
}
  #2 (permalink)  
Antiguo 16/11/2006, 01:18
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
¿Depuraste el programa? Si lo hicieras verias donde falla en un milisegundo. En este caso es en la linea fprintf(wf,"%s,\n",acu); pero como bien suponias el planteamiento es incorrecto a mas no poder. Con fscanf estas consiguiendo todo el archivo muy probablemente, imposible al no entrar en ese buffer de 30 bytes ... %s pide una cadena (terminada en cero), no una palabra delimitada por una coma. En este caso fprintf busca el 0 para terminar de escribir la cadena y al no encontrarlo sigue de largo ... puede que se te muera tambien en el fscanf ... da lo mismo, pedis una cantidad de bytes imposibles de guardar en ese buffer.

Para una solucion simple yo leeria todo el archivo (dejandolo en memoria) y despues lo recorreria con strstr() buscando todas la comas ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 16/11/2006, 19:09
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Bueno, otra opcion seria usar strtok, creo que es ligeramente mas facil.

jajajaja.

Saludos
  #4 (permalink)  
Antiguo 30/11/2006, 02:28
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
tal vez tu intencion fue hacer:

fscanf(of,"%[^,] ,",acu);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:35.