Hola,
Llevo como 8 horas intentando hacer un pequeño programa y he probado DE TODO Y MÁS y no lo logro.
El programa consiste en abrir un fichero .txt, el cuál está lleno de direcciones de correo y textos
"hola me llamo paco ejemplo@ejemplo.com mis amigos me pegan ejemplo2@ejemplo.com y me gusta la gelatina de limon ejemplo3@ejemplo.com"
Vale, lo que necesito es que el programa, después de abrir ese fichero, busque automáticamente todas las direcciones de correo del texto y me las separe y me las presente... el resultado sería algo así:
"ejemplo@ejemplo.com
ejemplo2@ejemplo.com
ejemplo3@ejemplo.com"
Sonaba sencillo, pero me está amargando la vida. La única forma que he logrado hacer algo parecido es esta:
#include <stdio.h>
#include <string.h>
int main(argc, argv)
int argc;
char *argv[];
{
FILE * archivo;
char lletres[100];
char *a;
fflush (stdin);
archivo = fopen(argv[1], "r");
while(feof(archivo)==0){
fgets(lletres, 100, archivo);
a=strchr(lletres,'.');
if (a!=NULL){
if(*a=='.'){
a++;
if(*a=='c'){
a++;
if(*a=='o'){
printf("%s",lletres);
}
}
}
}
while(*a==' '){
a--;
if (a==' '){
printf("%s",a);
}
}
}
fclose (archivo);
return 0;
}
Como veis, lo que hace el programa es buscar ".co" a lo largo del texto y así consigo que me imprima las direcciones de correo, pero... tienen que estar todas en la misma línea... si hay un intro de por medio, ahí es dónde el programa se peta.
Y luego, si tengo direcciones ".net" o ".es" ya la hemos jodido...
He probado de todo, he intentado con distintos bucles a poner un puntero señalando a la "@" y de ahí incrementar y decrementar hasta encontrar el espacio en blanco, pero NO lo he logrado de ninguna forma.
A ver si alguien me puede echar una mano porque estoy al borde del suicidio ya...
Gracias.