Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/03/2008, 23:30
Germancho7186
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: Quitar Todos Los Espacios, Tabs A Un Archivo

/*
Primero que nada cuando utilizes las funciones de archivo (u otras), deberas saber si el puntero que estas utilizando
es diferente a NULL, o sea que si utilizas alguna function y el parametro que pasas es NULL
va haber un ERROR (Access Vialotion).
Habia otros errores, que ya los corregi.
Ej, No iniciabas nR y nW con 0, cada vez que leías una nueva línea.
*/

// Reescribí el código(a mi me funciona, espero que sea esto lo que buscabas):

#include <stdio.h>
#include <conio.h>
#define MAXLINE 1024

int main(void)
{
FILE *pIn;
FILE *pOut;
long nR;
long nW;
char szLine[MAXLINE];

pIn = fopen("entrada.c", "r");
pOut = fopen("salida.c", "w");
if(pIn == NULL)
printf("No se pudo abrir el archivo de entrada\n");
if(pOut == NULL)
printf("No se pudo abrir el archivo de salida\n");

if(pIn != NULL && pOut != NULL) // Esto es muy importante
{
while(!feof(pIn)) // Continuar mientras haya caracters para leer
{
if(fgets(szLine, MAXLINE, pIn)) // Si tiene exito...
{
// nR y nW, siempre deber empezar con cero
nR = 0;
nW = 0;
while(szLine[nR] != '\0')
{
while(szLine[nR] == ' ' || szLine[nR] == '\t') // Avanzar nR mientras sea un espacio o un TAB
nR++;
szLine[nW++] = szLine[nR++]; // Copiar, y avanzar nR y nW
}
// Truncar la línea de salida (Es necesario)
szLine[nW] = '\0';

// Guardar línea
fputs(szLine, pOut);
}
}
}
printf("Fin...\n");
if(pIn) // Esto es muy importante
fclose(pIn);
if(pOut) // Esto es muy importante
fclose(pOut);
_getch();
return 0;
}

/*
Espero que haya quedado claro, sino abisa, e intentaré explicarlo mejor.
*/
/*
Recordá, el archivo de entrada debe existir.
*/