• # mon code :

    Posté par . En réponse au message Algo en C, quel livre choisir. Évalué à -1.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int short fich[4000000];
    unsigned long int tfile;
    void remplacer(char *chaine1, char *chaine2);
    void lien(char *chaine);
    int main(){
    FILE *fichier;
    char nom[81];
    unsigned long int i=0, j;
    system("ls *.log");
    printf("nom du fichier image :");
    scanf("%80s", nom );
    printf("\n---analyse du fichier---\n");
    fichier = fopen( nom , "r" ) ;
    if ( ! fichier ){
    printf("\n---erreur d'ouverture de fichier---\n");
    exit(1);
    }
    while(1){
    fscanf(fichier, "%c", &fich[i]);
    i++;
    if (feof(fichier)) break;
    }
    printf("\n---Fin du fichier---\n");
    tfile=i;
    for ( j = tfile+5 ; j > 0; j-- )
    fich[j]=fich[ j - 5];
    tfile+=5;
    if (fclose(fichier)) {
    printf("\n---erreur de fermeture de fichier---\n");
    exit(1);
    }
    remplacer("|\"LNOR", " ");
    remplacer("|\"LGRA", " ");
    remplacer("|\"LITA", " ");
    remplacer("|\"LRED", " ");
    remplacer("\n", "");
    liens("http://");
    printf("Nom du fichier fin :");
    scanf("%80s", nom );
    printf("\n");
    fichier = fopen( nom , "w" ) ;
    if ( ! fichier ){
    printf("\n---erreur d'ouverture de fichier---\n");
    exit(1);
    }
    for ( i=4 ; i < tfile; i++ ) {
    fprintf( fichier, "%c", fich[i] );
    }
    if (fclose(fichier)) {
    printf("\n---erreur de fermeture de fichier---\n");
    exit(1);
    }
    exit(1);
    }
    void remplacer(char *chaine1, char *chaine2){
    int i, j, verif, l1, l2;
    l1=strlen(chaine1);
    l2=strlen(chaine2);
    printf("On remplace la chaine ''%s'' de %d caractères, par la chaine ''%s'' ne %d caractères.\n", chaine1, l1, chaine2, l2);
    for (i=0; i<tfile;i++){
    verif=0;
    for (j=0; j<l1;j++){
    if ( fich[i+j] == *(chaine1 + j) ){
    verif++;
    }
    }
    if (verif==l1){
    for ( j = i ; j < tfile - l1; j++ )
    fich[j]=fich[ j + l1];
    for ( j = tfile+l2 ; j > i; j-- )
    fich[j]=fich[ j - l2];
    for ( j = i ; j < i + l2 ; j++ )
    fich[j]=*( chaine2 + j -i);
    tfile=tfile+l2-l1;
    }
    }
    }

    void liens(char *chaine){
    printf("Rencherche de site\n");
    int short i, j, verif, tchaine, debut, fin, l1, l2;
    char *chaine2, *chaine3;
    tchaine=strlen(chaine);
    printf("Chaine %s de %d caractères\n", chaine, tchaine);
    for (i=0; i<tfile;i++){
    verif=0;
    for (j=0; j<tchaine;j++){
    if ( fich[i+j] == *(chaine + j) ){
    verif++;
    }
    }
    if (verif==tchaine){
    printf("Site trouvé\n");
    debut=1;
    while(fich[i+debut]!=32 && fich[i+debut]!=13 && fich[i+debut]!=60 && fich[i+debut]!=62 ){
    debut--;
    }
    debut++;
    printf("debut de l'url au caractère :%d\n", debut);
    fin=0;
    while( fich[i+fin]!=32 && fich[i+fin]!=13 && fich[i+fin]!=60 && fich[i+fin]!=62 ){
    fin++;
    }
    printf("fin de l'url au caractère :%d\n", fin);
    printf("taille de l'url :%d\n", fin-debut);
    chaine2 = (char *)malloc((fin-debut)*sizeof(char)+1);
    chaine3 = (char *)malloc((2*(fin-debut)+17)*sizeof(char)+1);
    for (j=0;j<fin-debut;j++){
    *(chaine2+j)=fich[i+debut+j];
    *(chaine3+j+9)=fich[i+debut+j];
    *(chaine3+j+11+fin-debut)=fich[i+debut+j];
    }
    printf("%s\n", chaine2);
    *( chaine3 ) = 60 ;
    *( chaine3 + 1 ) = 97 ;
    *( chaine3 + 2 ) = 32 ;
    *( chaine3 + 3 ) = 104 ;
    *( chaine3 + 4 ) = 114 ;
    *( chaine3 + 5 ) = 101 ;
    *( chaine3 + 6 ) = 102 ;
    *( chaine3 + 7 ) = 61 ;
    *( chaine3 + 8 ) = 34 ;
    *( chaine3 + 9 + fin - debut ) = 34 ;
    *( chaine3 + 10 + fin - debut ) = 62 ;
    *( chaine3 + 11 + ( fin - debut ) * 2 ) = 60 ;
    *( chaine3 + 12 + ( fin - debut ) * 2 ) = 47 ;
    *( chaine3 + 13 + ( fin - debut ) * 2 ) = 97 ;
    *( chaine3 + 14 + ( fin - debut ) * 2 ) = 62 ;
    *( chaine3 + 15 + ( fin - debut ) * 2 ) = 32 ;
    *( chaine3 + 16 + ( fin - debut ) * 2 ) = 0 ;
    *( chaine3 + 17 + ( fin - debut ) * 2 ) = 0 ;
    printf("%s\n", chaine3);
    l1=1+(fin-debut);
    l2=17+(fin-debut)*2;
    printf("%d %d", l2, strlen(chaine3));
    for ( j = i + debut; j < tfile - l1+1; j++ )
    fich[j]=fich[ j + l1-1];
    for ( j = tfile+l2 ; j > i+debut; j-- )
    fich[j]=fich[ j - l2];
    for ( j = 0; j < l2; j++ )
    fich[j+i+debut]=*( chaine3 + j);
    tfile=tfile+l2-l1;
    i=i+l2+1;
    }
    }
    }