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

Poner Espacios En Un Archivo Cuando Aparezca....

Estas en el tema de Poner Espacios En Un Archivo Cuando Aparezca.... en el foro de C/C++ en Foros del Web. este codigo lo que ase es sacar todos los espacios y tabs de un archivo, ahora lo que quiero es ponerle un espacio delante y ...
  #1 (permalink)  
Antiguo 30/03/2008, 20:17
 
Fecha de Ingreso: marzo-2008
Mensajes: 17
Antigüedad: 16 años, 1 mes
Puntos: 0
Poner Espacios En Un Archivo Cuando Aparezca....

este codigo lo que ase es sacar todos los espacios y tabs de un archivo, ahora lo que quiero es ponerle un espacio delante y despues de cuando aparesca un parentesis, un sigo de comparacion uno de asignacion y eso pero nose como ni donde ponerlo dentro de este codigo he intentado pero nada resulta



#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;
}
  #2 (permalink)  
Antiguo 31/03/2008, 12:07
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: Poner Espacios En Un Archivo Cuando Aparezca....

Código:
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
}
Yo cambiaria el while anidado por un un if o un switch si lo quieres poner mas "elegante", jejejejeje

Código:
while(szLine[nR] != '\0')
{
   switch (szLine[nR]){
        case '':
        case '\t':
                nR++;
                szLine[nW++] = szLine[nR++];
        break;
        case '(':
        case ')':
                szLine[nW++] = ' ';
                szLine[nW++] = szLine[nR++];
                szLine[nW++] = ' ';
        break;        
   }
  }
Espero haber entendido bien lo que preguntabas...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #3 (permalink)  
Antiguo 31/03/2008, 12:09
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: Poner Espacios En Un Archivo Cuando Aparezca....

Perdon, le cambie a lo que hacia originalmente el prog, va de nuevo

Código:
while(szLine[nR] != '\0')
{
   switch (szLine[nR]){
        case '':
        case '\t':
                nR++;
        break;
        case '(':
        case ')':
                szLine[nW++] = ' ';
                szLine[nW++] = szLine[nR++];
                szLine[nW++] = ' ';
        break;        
        default:
                szLine[nW++] = szLine[nR++];
        break;
   }
  }
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
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 03:03.