#include #include #include #include #define pattern "([a-z]+\\:\\/\\/)?(www\\.)?(([a-zA-Z]+\\.)+)([a-zA-Z]+)(\\/)(([a-zA-Z0-9]+\\/)*)([a-zA-Z0-9]+)(\\.[a-zA-Z0-9]+)" char** write(int* num){ int maxsize=100; int maxsizein=100; int N=1; char** text=malloc(maxsize*sizeof(char*)); int Nin=1; text[N-1]=malloc(maxsizein*sizeof(char)); while(1){ if (Nin==maxsizein){ maxsizein=maxsizein*2; text[N-1]=realloc(text[N-1],maxsizein*sizeof(char)); } scanf("%c",&text[N-1][Nin-1]); if(!strcmp(text[N-1],"Fin.")){ break; } if(text[N-1][Nin-1]=='\n'){ if (Nin+1==maxsizein){ maxsizein=maxsizein*2; text[N-1]=realloc(text[N-1],maxsizein*sizeof(char)); } text[N-1][Nin]='\0'; N++; if (N==maxsize){ maxsize=maxsize*2; text=realloc(text,maxsize*sizeof(char*)); } Nin=1; text[N-1]=malloc(maxsizein*sizeof(char)); continue; } if (Nin+1==maxsizein){ maxsizein=maxsizein*2; text[N-1]=realloc(text[N-1],maxsizein*sizeof(char)); } text[N-1][Nin]='\0'; Nin++; } *num=N; return text; } int main(){ int N=0; char** txt=write(&N); regex_t preg; int err = regcomp(&preg,pattern, REG_EXTENDED); int regerr; if (err != 0) { char buff[512]; regerror(err, &preg, buff, sizeof(buff)); printf("%s\n", buff); } regmatch_t pm[11]; for(int j=0;j