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

Abrir un txt, manejarlo linea por linea y guardarlo

Estas en el tema de Abrir un txt, manejarlo linea por linea y guardarlo en el foro de C/C++ en Foros del Web. Tengo un txt con muchos links 300 o 400 links , el tema es que necesito sacar los que necesito, por ej, los que sean ...
  #1 (permalink)  
Antiguo 20/12/2007, 11:08
estebing
Invitado
 
Mensajes: n/a
Puntos:
Abrir un txt, manejarlo linea por linea y guardarlo

Tengo un txt con muchos links 300 o 400 links , el tema es que necesito sacar los que necesito, por ej, los que sean php, tengo uno por linea en el txt, y quiero dejar lo que necesito realmente, si alguien me puede dar una mano, se los agradezco

http://www.clarin.com.ar
http://foros.emagister.com/foro-NuevoTema.php?id_foro=13041 //Este es el que necesito
  #2 (permalink)  
Antiguo 20/12/2007, 12:09
Avatar de Solenbum  
Fecha de Ingreso: noviembre-2007
Mensajes: 45
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Abrir un txt, manejarlo linea por linea y guardarlo

una posible solucion mala seria leer linea a linea, y cada linea meterla en una especie de vector/buffer temporal, si encuentras alguna parte "php" en dicho vector pues dicha linea la pasas al otro fichero o a donde quieras traspasarlo.

se que es mala, y puede inducir a errores

esperemos a los expertos.
  #3 (permalink)  
Antiguo 20/12/2007, 12:55
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Abrir un txt, manejarlo linea por linea y guardarlo

Si estás usando C++ almacena cada línea en un string y usas los métodos de esta clase para ver si estas contienen la cadena php. OJO no es necesario un string por cada línea que leas, solo necesitas una para hacer las búsquedas, lo que hagas una vez encontrada es otra historia.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #4 (permalink)  
Antiguo 14/03/2008, 13:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 2 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
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 23:50.