Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/03/2008, 13:29
Germancho7186
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: Abrir un txt, manejarlo linea por linea y guardarlo

#include <stdio.h>
#include <conio.h>
#include <windows.h>

#define MAX_LINE_LENGTH 500
#define TYPE_LINE_UNKNOWN (-1)

enum
{
TYPE_LINE_ALL,
TYPE_LINE_PHP,
TYPE_LINE_EMAIL,
TYPE_LINE_OTHER,
};

void find(char *file, long typeline)
{
FILE *pfSrc;
FILE *pfDst;
TCHAR szFile[MAX_LINE_LENGTH + 1];
TCHAR szLine[MAX_LINE_LENGTH + 1];

strcpy(szFile, file);
if(NULL == (pfSrc = fopen(szFile, "r")))
{
return;
}
strcat(szFile, ".cpy");
if(NULL == (pfDst = fopen(szFile, "w")))
{
fclose(pfSrc);
return;
}
PTSTR pPtr;
ULONG nTypeFound;
while(!feof(pfSrc))
{
fgets(szLine, MAX_LINE_LENGTH, pfSrc);

pPtr = szLine;
if(szLine[0] == '\0')
continue;
if(szLine[0] == '/' && szLine[1] == '/') // Comentario
continue;
if(szLine[0] == '\r' || szLine[0] == '\n') // Si la línea esta vacía, entonces saltear
continue;
if(typeline == TYPE_LINE_ALL)
{
nTypeFound = TYPE_LINE_ALL;
}
else
{
nTypeFound = TYPE_LINE_OTHER;
for(pPtr = szLine; pPtr[0] != '\0'; pPtr++)
{
if(pPtr[0] == '.')
{
pPtr++;
if(pPtr[0] == 'p' && pPtr[1] == 'h' && pPtr[2] == 'p')
{
nTypeFound = TYPE_LINE_PHP;
}
}
else if(pPtr[0] == '@')
{
nTypeFound = TYPE_LINE_EMAIL;
}
}
}
if(typeline == nTypeFound)
{
fwrite(szLine, strlen(szLine), 1, pfDst);
}
szLine[0] = '\0';
}
fclose(pfSrc);
fclose(pfDst);
}
void main(int argc, char *argv[])
{
long i;
char c;
long type;

if(argc > 1)
{
printf("¿Que lineas deceas buscar?\n");
printf("(A) = Todo\n");
printf("(P) = PHP\n");
printf("(E) = EMAIL\n");
printf("(O) = Otro\n");

c = getchar();
if(c == 'a' || c == 'A')
type = TYPE_LINE_ALL;
else if(c == 'p' || c == 'P')
type = TYPE_LINE_PHP;
else if(c == 'e' || c == 'E')
type = TYPE_LINE_EMAIL;
else if(c == 'o' || c == 'O')
type = TYPE_LINE_OTHER;
else
{
printf("Opcion no disponible\n");
_getch();
return;
}
printf("argc: %d\n", argc);
for(i = 1; i < argc; i++)
{
printf("argv[i]: %s\n", argv[i]);
find(argv[i], type);
}
}
//_getch();
}

Última edición por Germancho7186; 14/03/2008 a las 13:43